0

私は Rails の初心者で、Rails の道への道を探しています。

現在、関連するモデルの値をフォームで使用する方法を探しています。例として、*has_one* 関係を持つ 2 つのモデルを作成します。マスター テーブル「Products」にはフィールド「 unit_id 」があります - 関連テーブル「Units」のアイテムの ID です。

明確にするために:モデル製品のアイテムには属性「ユニット」があります。1 つの商品には 1 つの属性単位があります。モデル ユニットのアイテムは一意であり、1 つのアイテム ユニットが製品内の多くのアイテムに属している場合があります。

フォームで新しい製品の単位を選択したいのですが、units#index のフォームを開くことができますが、呼び出し元のフォームで選択した項目を返して使用するにはどうすればよいですか?

コード片:

1. モデル製品:

class Product < ActiveRecord::Base
# ... 
 belongs_to :unit
end

2. モデル単位: (コードはありません)

class Unit < ActiveRecord::Base
end

3. 関連フォームへのリクエストを使用するためのテンプレート:

<%= form_for(@product) do |product_form| %>
  ...
  <%= product_form.label :"#{t('unit')}:"%>
  <%= link_to t('unit_select'), units_path%>
  ...
 <div class="actions">
  <%= product_form.submit %>
 </div>
<% end %>

4.単位のインデックスを含むフォームのテンプレートで、そこから選択したい:

<%@units.each do |unit|%>
 <a href="<%=units_path%>">
  <div>
   <%= unit.shortname %>
   <%= unit.fullname %>
   <%= unit.okei %>
  </div>
 </a>
<%end%>

そして私の質問は次のとおりです。どうすればいいですか?Units テーブルから選択したアイテムを返して使用するにはどうすればよいですか?

PS私の英語でごめんなさい。PPS I have example images, but no have the reputaion for include them to my question: https://plus.google.com/photos/101112417211111476248/albums/5848798001333173089/5889575276122513954?banner=pwa&pid=5889575276122513954&oid=101112417211111476248

https://plus.google.com/photos/10111241721111476248/albums/5848798001333173089/5889575270731602306?banner=pwa&pid=5889575270731602306&oid=101112417211111476248

4

1 に答える 1

0

私はあなたに3つの異なるオプションを提供します:

1 - 最善の解決策は、フォームにユニットのリストを用意し、そこで IMO を選択することです。実装がより簡単になり、ユーザーのエクスペリエンスが向上します。

2 - フォームに hidden_​​field を追加しますproduct_form.unit_id。次に、http://lokeshdhakar.com/projects/lightbox2/を使用してユニットを表示し、JavaScript を追加して、ユーザーがユニットをクリックするとライトボックスを閉じ、hidden_​​field 値をユニットの ID で更新します。

3 - unit_id パラメータを渡すフォーム ページにリダイレクトするユニット ページのユニットへのリンクを追加し、コントローラで次のようにします@product.unit = Unit.find(params["unit_id"] if params["unit_id"].present?。しかし、この方法では、以前に変更されたデータが失われます。確かに良い解決策ではありません

于 2013-06-15T06:41:15.477 に答える