2012-05-16 71 views
1

我有一个用于新操作的rails视图。我使用formtastic来生成表单,并且我可以选择一个可能已经传递给控制器​​的形式模板。在formtastic url中传递可选参数

我想要做的就是确保这proforma_id获得通过传递到我已经找到一种方法来做到这一点,当表单提交

的创建方法,但我想知道这是否是一个有点hackish如果没有这样做的一个更清洁更红宝石般的方式:

<% params = {:proforma_id => @proforma.id} unless @proforma.nil? %> 
<%= semantic_form_for @document, :url => documents_path(params) do |f| %> 

也许我应该把PARAMS线控制器?

回答

2

两种方式,你可以通过它,这取决于你是否希望它在URL,或者如果你想在POST数据......

正如你所发现的第一种方式是将它传递的网址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) %> 
+0

样子。尝试(:ID)将是理想的,这和许多其他情况! – sgbett