0

neweditの2 つのアクションがあり、これらはビューで名前付き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 列の最初の 4 桁は架空の item_type_id 列から取得され、次の 4 桁は *item_id* ですこの性交テーブルは変更できません。

/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

きちんと説明されているかわかりませんが、まだ英語のレッスンを受けています。

4

1 に答える 1

1

アイテム モデルの to_param メソッドをオーバーライドします。

def to_param
  "#{id % 10000 }"
end
于 2013-09-10T05:32:29.340 に答える