Дополнительный параметр в form_for в Rails - PullRequest
7 голосов
/ 06 мая 2011

Можно ли передать другой параметр вне данных формы в рельсах? Моя проблема в том, что я отображаю разные формы для разных классов и отправляю их в один и тот же метод create. Я хотел бы отправить класс с формой (как значение, а не как ключ в хэше). Что-то вроде параметра: type (это на самом деле не работает)

<%= form_for(@an_object, :url => { :controller => :a_controller, :action => :create }, 
    :type => @an_object.class.to_s.underscore) do |f| %>

Почтовое сообщение выглядит так:

{"commit"=>"Create Class of an Object",
 "authenticity_token"=>"/iqu0A8/AocDT3HyjL5/+bKZiLkyr4FE71u/mc8Wx0Y=",
 "utf8"=>"✓",
 "class_of_an_object"=>{"name"=>"a name",
 "description"=>"a description"}}

и у меня будет "type" => "class_of_an_object", но непосредственно в хэше, а не в хэше "class_of_an_object".

Ответы [ 2 ]

13 голосов
/ 06 мая 2011
<%= form_for @an_object, 
             :url => { :controller => :a_controller, 
                       :action => :create, 
                       :type => @an_object.class.to_s.underscore } do |f| %>

И я предпочитаю использовать именованные маршруты

<%= form_for @object, :url => object_path(@object, :type => "whtever"), :html => {:method => :post} do |f| %>
4 голосов
/ 14 ноября 2012

Это работает для меня:

<%= form_for @foo, :url => foo_path(:type => "whatever"), :html => {:method => :post} do |f| %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...