我有一个新动作的rails视图。我使用formtastic生成表单,并且我可以选择有一个可能已传递给控制器的形式模板。
我想要做的是确保在提交表单时将此proforma_id传递给create方法
我找到了一种方法可以做到这一点,但我想知道这是否有点hackish,如果没有更干净,更像红宝石的方式:
<% params = {:proforma_id => @proforma.id} unless @proforma.nil? %>
<%= semantic_form_for @document, :url => documents_path(params) do |f| %>
也许我应该把params线放在控制器中?
答案 0 :(得分:2)
您可以通过两种方式传递它,具体取决于您是想在URL中使用它还是在POST数据中使用它...
正如您所发现的,第一种方法是将其传递给url params。您可以在控制器中设置该变量,但您可能可以使用
<%= semantic_form_for @document, :url => documents_path(:proforma_id => @proforma.try(:id)) do |f| %>
如果额外的参数是nill,它就不会出现,IIRC。
另一种选择是将其作为隐藏变量放在表单中:
<%= hidden_field_tag :proforma_id, @proforma.try(:id) %>