【问题标题】:RoR edit and new formRoR 编辑和新表格
【发布时间】:2025-12-23 17:25:06
【问题描述】:

我有两个动作:newedit,它们在视图中调用一个名为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字段,它是一个组合列但在一个单一的。我解释一下:

我有一个 items 元组:

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

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

【问题讨论】:

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


    【解决方案1】:

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

    def to_param
      "#{id % 10000 }"
    end
    

    【讨论】:

    • 这比看起来容易吗?我想去办公室取证。