こんにちは仲間のプログラマー、同じ製品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の特別価格の他のエントリを追加すると、配列自体は更新されません。私はいくつかの研究を行いました、そして、私はそれがローカル変数とインスタンス変数と関係するかもしれないと思います、誰かが私を正しい方向に向けることができますか?どうもありがとう!私は助言に感謝します。ここで
新しい 'special_prices'が既存の製品に追加された場合、' Product's:special_prices'を更新できましたか? – mrvncaragay
はい。この顧客に2つ以上のspecial_pricesがあっても1つの製品:special_pricesのみが正常に更新されます。 –