2011-03-16 30 views

回答

159
form_for @user, :url => url_for(:controller => 'mycontroller', :action => 'myaction') 

form_for @user, :url => whatever_path 
+15

中描述我不認爲'url_for'是必要的。此外,由於控制器是相同的,你可以使用'form_for @user,:url =>:action =>'myaction'' – rubyprince 2011-03-16 03:32:31

+1

以上答案是有幫助的,但我不得不稍微調整它,否則POST總是路由到編輯控制器操作,否則:<%= form_for(@user,url:{action:「myaction」},method :: post)do | user_form | %>。請注意,這是針對views/users /文件夾中的視圖文件。 – AarCee 2015-08-31 15:00:40

36

對我來說,以下工作:

form_for @user, :url => {:action => "YourActionName"} 
+1

這起作用。通過搜索'action:'(* action冒號*)在官方文檔中查看它。http://api.rubyonrails.org/classes/ActionView/Helpers/FormHelper.html#method-i-form_for – user664833 2014-02-20 23:12:06

+2

嗯不知道。我已經把'form_for @user,url:{action:'myaction'}',但它給了我'沒有路由匹配{:action =>「myaction」,:controller =>「users」}'錯誤。 – lulalala 2015-06-26 01:57:36

9

我已經做了這樣的

<%= form_for :user, url: {action: "update", params: {id: @user.id}} do |f| %> 

注意可選參數id設置爲用戶實例id attr ibute。

3

如果你想定製的控制器傳遞到的form_for而呈現局部的表單,您可以使用此:

<%= render 'form', :locals => {:controller => 'my_controller', :action => 'my_action'}%> 

,然後在表格部分使用這個局部變量是這樣的:

<%= form_for(:post, :url => url_for(:controller => locals[:controller], :action => locals[:action]), html: {class: ""}) do |f| -%> 
3

可選地同樣可以使用form_tag與語法來達到:

form_tag({controller: "people", action: "search"}, method: "get", class: "nifty_form") 
# => '<form accept-charset="UTF-8" action="/people/search" method="get" class="nifty_form">' 

http://guides.rubyonrails.org/form_helpers.html#multiple-hashes-in-form-helper-calls

+0

這是真的,但問題是關於一個特定的對象 - 在這種情況下是'@ user'。使用'form_tag'不會將對象的屬性綁定到表單域。 – 2017-11-30 17:44:53