RoR编辑和新表单

时间:2013-09-09 23:10:06

标签: ruby-on-rails ruby-on-rails-3 forms model

我有两个操作:编辑,这些操作会在视图中调用部分名为的表单

(查看):

<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列的前四位来自 ficticious 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

我不知道我是否得到了正确的解释,我还在上英语课。

1 个答案:

答案 0 :(得分:1)

覆盖项目模型中的to_param方法。

def to_param
  "#{id % 10000 }"
end