1

我有一个新动作的 Rails 视图。我正在使用 formtastic 生成表单,并且我可以选择有一个可能已传递给控制器​​的形式模板。

我想要做的是确保在提交表单时将这个 proforma_id 传递给 create 方法

我找到了一种方法来做到这一点,但我想知道这是否有点骇人听闻,以及是否没有更清洁、更像红宝石的方法:

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

也许我应该把参数线放在控制器中?

4

1 回答 1

2

您可以通过两种方式传递它,具体取决于您是希望在 URL 中还是在 POST 数据中...

正如您所发现的,第一种方法是在 url 参数中传递它。您可以在控制器中设置该变量,但您可能会逃脱

<%= semantic_form_for @document, :url => documents_path(:proforma_id => @proforma.try(:id)) do |f| %>

如果额外的参数为零,它就不会出现,IIRC。

另一种选择是将其作为隐藏变量放入表单中:

<%= hidden_field_tag :proforma_id, @proforma.try(:id) %>
于 2012-05-16T18:31:11.653 回答