在「新建」按下提交按鈕後,我會自動進入「創建」(類似「編輯」到「更新」後)。我所有的參數都可以在「創建」中找到。這是默認的。 如果我有「導出」而不是「新建」和「process_export」而不是「創建」 - 如何達到類似的效果?「提交」後有什麼操作?
-3
A
回答
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
導軌遵循Convention over Configuration
的概念。當類似的request
出現在Rails 4中時,將自動從控制器調用REST
的7種方法。例如:GET
請求會調用新方法,POST
會調用create方法,DELETE
會調用destroy方法等。
現在,如果你正在創建一個custom method
你controller
像export
,如果你想在submit
按鈕點擊之後調用它,你必須在routes.rb
文件中設置相應routes
。這是可以做到:
post "/chats" => "chats#export"
這裏,chats
是controller
和export
是要在submit
行動調用該控制器的方法。
你可以這樣做:
$ > rails g scaffold Controller_name
,這將自動生成所有在你的控制器7種REST方法和類似的路線產生,你可以通過做檢查:
$ > rake routes
我希望這幫助。
謝謝,托比亞斯,試圖幫助,但我仍然無法得到工作的例子。作爲管理服務的一部分,我希望導出和導入項目的重要表格。我創建了控制器,放到'新'動作選擇框中選擇表格,並在提交後放入'創建'導出過程中。現在我必須爲導入做同樣的事情。我看到2種方法:將第二個提交按鈕放入'新建'或使用'new2'和'create2'操作。我選擇了第二種方式,但在提交'new2'後,我不會自動進入'create2'。我明白解決方案是在'routes.rb'中添加行,但語法有問題。 – sergey
我強烈建議你爲導入和導出創建兩個控制器,因爲這是兩個不同的行爲,它們的行爲也不同。所以例如一個'ImportController'和'ExportController'。通過這種方式,他們中沒有一個阻礙另一個,它具有很好的可擴展性。 – Tobias
非常感謝,很簡單!你是對的:更好地找到替代解決方案,而不是避免默認選項的調查。 – sergey