【发布时间】:2015-07-25 02:48:15
【问题描述】:
问这个问题感觉自己像个白痴,但我开始觉得我最初是用错误的方式学习的。
我可能会注意到我没有使用嵌套路由。
如果我有两个模型:
class Category < ActiveRecord::Base
has_many :products
end
class Product < ActiveRecord::Base
belongs_to :category
end
从相应的父类别页面创建新产品的最佳方式是什么?
目前我在分类页面上有这个
<%= link_to new_product_path(:category_id => @category)
然后在我使用的新产品页面上:
<%= form_for @product do |p| %>
<%= p.hidden_field :category_id, :value => params[:category] %>
#rest of fields
#etc
<% end %>
只要 url 参数存在,这将起作用。但是,一旦用户通过后退按钮或由于验证失败而渲染“新”到达此页面,url 参数就会丢失并且不再起作用。
这是一个非常简单的日常 Rails 任务,必须有一种更可靠的方法从父页面创建子记录。
【问题讨论】:
-
你可以试试cookie来存储类别值api.rubyonrails.org/classes/ActionDispatch/Cookies.html
-
您不使用嵌套路由是否有原因?
-
我没有使用嵌套路由,因为这些类别既有子类别(自加入)又有产品。这让事情变得更容易了。
标签: ruby-on-rails