2015-11-26 79 views
-3

在「新建」按下提交按鈕後,我會自動進入「創建」(類似「編輯」到「更新」後)。我所有的參數都可以在「創建」中找到。這是默認的。 如果我有「導出」而不是「新建」和「process_export」而不是「創建」 - 如何達到類似的效果?「提交」後有什麼操作?

回答

0

如果我找到你的權利比你不想發送表單到默認的create行動,而是給另一個,在你的例子到process_export行動。

您只需要在您的routes.rb中創建路線並設置自定義表單動作網址。

例子:

的routes.rb

get '/process_export' => 'your_controller#export' # replace `your_controller` with your controller name 
post '/process_export' => 'your_controller#process_export', as: :process_export 

在你export觀點:

<%= form_for :resource, url: process_export_path do |f| %> <!-- Replace resource with your proper resource --> 
    <!-- Your form here --> 
<% end %> 

但我強烈建議你觀察REST的約定。它讓你的生活變得更輕鬆。

這是一些解釋比較詳細兩個資源:

+0

謝謝,托比亞斯,試圖幫助,但我仍然無法得到工作的例子。作爲管理服務的一部分,我希望導出和導入項目的重要表格。我創建了控制器,放到'新'動作選擇框中選擇表格,並在提交後放入'創建'導出過程中。現在我必須爲導入做同樣的事情。我看到2種方法:將第二個提交按鈕放入'新建'或使用'new2'和'create2'操作。我選擇了第二種方式,但在提交'new2'後,我不會自動進入'create2'。我明白解決方案是在'routes.rb'中添加行,但語法有問題。 – sergey

+0

我強烈建議你爲導入和導出創建兩個控制器,因爲這是兩個不同的行爲,它們的行爲也不同。所以例如一個'ImportController'和'ExportController'。通過這種方式,他們中沒有一個阻礙另一個,它具有很好的可擴展性。 – Tobias

+0

非常感謝,很簡單!你是對的:更好地找到替代解決方案,而不是避免默認選項的調查。 – sergey

0

導軌遵循Convention over Configuration的概念。當類似的request出現在Rails 4中時,將自動從控制器調用REST的7種方法。例如:GET請求會調用新方法,POST會調用create方法,DELETE會調用destroy方法等。

現在,如果你正在創建一個custom methodcontrollerexport,如果你想在submit按鈕點擊之後調用它,你必須在routes.rb文件中設置相應routes。這是可以做到:

post "/chats" => "chats#export" 

這裏,chatscontrollerexport是要在submit行動調用該控制器的方法。

你可以這樣做:

$ > rails g scaffold Controller_name 

,這將自動生成所有在你的控制器7種REST方法和類似的路線產生,你可以通過做檢查:

$ > rake routes 

我希望這幫助。

+0

感謝。我不完全明白什麼意思/:文字。在你的術語中: – sergey

+0

@sergey:編輯我的答案。 thanx標記出來。 :) –

+0

謝謝。我不完全明白什麼意思/:文字。所以:我的控制器:'聊天',我的動作是'導出',並且在'導出'中提交後我的動作是'process_export'。當然,我必須寫在routes.rb獲得「/聊天/出口」=>「聊天#出口」和現在(你的建議)我必須添加額外的帖子「/聊天/出口」=>「聊天#process_export」。這是對的嗎? – sergey