Дополнительный параметр в form_for в Rails

#ruby-on-rails

#ruby-on-rails

Вопрос:

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

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

Сообщение post выглядит следующим образом:

 {"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».

Комментарии:

1. Вы хотите, чтобы параметр отправлялся в URL как параметр GET или в теле как параметр POST?

Ответ №1:

 <%= 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| %>
  

Ответ №2:

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

 <%= form_for @foo, :url => foo_path(:type => "whatever"), :html => {:method => :post} do |f| %>