【发布时间】:2013-11-05 17:29:00
【问题描述】:
我有两个模型:页面有很多部分。我没有使用嵌套资源,因为还有第三种模型。在我的页面#show 中,我有一个链接可以创建属于当前页面的新部分:
<%= link_to 'New Section', new_section_path(:page_id => @page) %>
在我的剖面视图中,我有:
<%= form_for(@section) do |f| %>
.
.
.
<div class="field">
<%= f.label :title %><br />
<%= f.text_field :title %>
</div>
<%= f.hidden_field :page_id, :value => params["page_id"] %>
<div class="actions">
<%= f.submit %>
</div>
当然,问题在于这会将 page_id 正确地传递到新的 Section 表单中,但是当用户通过编辑路径返回表单时,params["page_id"] 为空。我想在创建时设置 page_id 一次,并且永远不要再更改它(也许有一种方法可以创建一个从表单中删除该隐藏字段的条件,或者更简洁的方法?)。
非常感谢您的帮助。
【问题讨论】:
-
在 ... 中包裹隐藏字段标签。有没有更好的 Railsier 方法来做到这一点?
-
或
params.try(:[], :page_id) -
无包装使用内联
<%= f.hidden_field(:page_id, :value => params["page_id"]) if params.has_key?(:page_id)%> -
Railsier 的方式是使用嵌套资源(例如 /pages/1/sections/new)。你的第三个模型有什么困难?您当前的方法似乎允许在创建部分时出现某种中断的工作流程。当用户返回编辑并且 page_id 不在参数中时会发生什么?他们会创建一个孤立的部分吗?这可以接受吗?
-
问题是每个部分都有很多块。 Rails 指南建议不要将嵌套资源用于两个以上的级别。您所说的工作流程中断就是我问这个问题的原因;我正在寻找一种仅在创建时分配 page_id 的方法。
标签: ruby-on-rails ruby relationship