2016-08-01 17 views
1

こんにちは仲間のプログラマー、同じ製品ID

私は過去2日間に私を悩ませてきたこの小さな問題で立ち往生していますがあるときにモデルデータを交換してください。私のプロジェクトには2つのモーダル、product、special_priceがあります。私が達成しようとしているのは、special_pricesテーブルにproduct_idのエントリがある場合、利用可能なすべての製品の価格を置き換えることです。そこで、私のモデルファイルは以下の通りです:

product.rb

class Product < ActiveRecord::Base 
    has_many :special_prices, dependent: :destroy 

    before_save :upcase_stock_code 

    validates :name, presence: true, length: { maximum: 50 } 
    validates :stock_code, presence: true, length: { maximum: 20 } 
    validates :status, presence: true, length: { maximum: 10 } 
    validates :default_price, presence: true 
end 

special_price.rb

class SpecialPrice < ActiveRecord::Base 
    belongs_to :product 
    belongs_to :customer 

    validates :product_id, presence: true, uniqueness: { scope: [:customer_id] } 
    validates :customer_id, presence: true 
    validates :price, presence: true 
end 

私の顧客のコントローラ価格はshowアクションに表示される場所としてのとおりです。私の見解で

def show 
    @customer = Customer.find(params[:id]) 
    @customer_active = Customer.find_by(id: params[:id], status: "active") 
    @user = User.find_by(params[:user_id]) 
    @special_price = SpecialPrice.find_by(customer_id: params[:id]) 
    @special_prices = SpecialPrice.where(customer_id: params[:id]) 
    @products = Product.all 
end 

上記のコードを使用することにより

show.html.erb

<div class="tab-pane" id="prices"> 
    <h1>Products</h1> 
    <div> 
     <%= render 'special_prices/price' %> 
    </div> 
</div> 

_price.html.erb

<% @products.each do |k| %> 
    <span> 
    <%= k.id %> 
    <%= k.name %> 

    <% if k.id == @special_price.product_id %> 
     <%= @special_price.price %> 
    <% else %> 
     <%= k.default_price %> 
    <% end %> 
    </span></br> 
<% end %> 

、私はそのspecial_priceを表示するには1つの製品を取得することができています。しかし、別のproducts_idの特別価格の他のエントリを追加すると、配列自体は更新されません。私はいくつかの研究を行いました、そして、私はそれがローカル変数とインスタンス変数と関係するかもしれないと思います、誰かが私を正しい方向に向けることができますか?どうもありがとう!私は助言に感謝します。ここで

+0

新しい 'special_prices'が既存の製品に追加された場合、' Product's:special_prices'を更新できましたか? – mrvncaragay

+0

はい。この顧客に2つ以上のspecial_pricesがあっても1つの製品:special_pricesのみが正常に更新されます。 –

答えて

0

は私の提案です:製品has_many :special_prices以来変更_price.html.erb

<% @products.each do |k| %> 
    <span> 
    <%= k.id %> 
    <%= k.name %> 

    <!-- show product special_prices --> 
    <% if !k.special_prices.empty? %> 
     <%= k.special_prices.each do |p| %> 
     <span><%= p.price %></span> 
     <% end %> 
    <% else %> 
     <%= k.default_price %> 
    <% end %> 
    </span> 
<% end %> 

あなたがproduct.special_pricesを呼び出すことによって、製品の特別価格を呼び出すことができますし、それはその特定の製品のための特別価格のコレクションを返します。

+0

ありがとう!!これは私のためにうまくいった、私はちょうど終わりのステートメントを逆にする必要があった。再び助けてくれてありがとう!あなたは私に時間の束を救った! –

+0

ああ、ちょうど実現するべきではない!あなたの問題を解決してうれしい – mrvncaragay

関連する問題