我有两个动作:new和edit,它们在视图中调用部分命名的form。
新的(视图):
<h1>New Item</h1>
<%= render partial: 'form' %>
编辑(查看):
<h1>Edit Item</h1>
<%= render partial: 'form' %>
表格(部分):
<%= form_for @item do |f| %>
<% f.field_for :foo %>
<% end %>
该模型对数据库中的 id 字段有很大的特殊性,它是一个组合列,但在一个单独的列中。我解释:
我有一个项目元组:
id | name | foo
----------------------------------
10001000 | Name of item 1000 | bar
10001001 | Name of item 1001 | bar
10011000 | Name of item 1000 | bar
10021000 | Name of item 1000 | bar
10021001 | Name of item 1001 | bar
id 列的前四位来自虚构的 item_type_id 列,接下来的四位是*item_id*。这个 f**k 表不能更改。
运行/items/new时我没有问题,因为表单生成了正确的操作 html 属性。
<form action="/items/new" method="post">...</form>
但是,当我运行/items/edit时,表单生成如下:
<form action="/items/10021001/edit" method="post">...</form>
它需要像这样生成:
<form action="/items/1001/edit" method="post">...</form>
id 列1002的第一部分来自会话变量。
我正在使用 routes.rb 中的技巧
resources :items
我不知道我的解释是否正确,我正在上英语课。