Rails は初めてです。製品とキャラクターをモデルとする Rails プロジェクトを作成しています。次の質問があります。
Q1. 2 つのモデル間の特定の関連付けは正しいですか?
class Product < ActiveRecord::Base
has_many :characters
end
class Character < ActiveRecord::Base
belongs_to :product
end
Q2. 製品の「表示」ページに新しいキャラクターを追加するためのリンクを作成しました。たとえば、新しいキャラクターの追加をクリックすると、キャラクター名のドロップダウン リストがあるキャラクターの「新しい」ページが表示されます (つまり、身長、幅、重量、色) しかし、そうではありません。
NoMethodError in Characters#new
エラー表示中です。
私のキャラクター/新しいファイルの下の行でエラーが発生しました。
collection_select(:product, :c_id, @character, :id, :name)
注: 移行する前に、name 属性の値を文字の高さ、重量、幅、色として作成しました。
Q3. それが機能する場合 (つまり、Q2)、製品の「表示」ページにキャラクターの名前と値を表示したいのですが、このために製品の「表示」ページにリダイレクトするにはどうすればよいですか?
新規、表示、および作成用の私のキャラクターコントローラー:
def show
@product = Product.find(params[:id])
@character = Character.find(params[:id])
end
def new
@character = Character.new(params[:character])
@product = Product.find(params[:id])
end
def create
@character = Character.new(params[:character])
if @character.save
redirect_to :action => 'show', :id => @product.id
else
render :action => 'new'
end
end
さて、キャラクター/新規にキャラクターの値を入力し、作成ボタンをクリックすると、次のエラーが表示されます
ActiveRecord::RecordNotFound in ProductsController#show
Couldn't find Product without an ID
製品/ショーでキャラクターの名前と値を表示したい. 上記のエラーは私がそれをするのを止めています..
ProductsController の私の show メソッド:
def show
@product = Product.find(params[:id])
@character = Character.find(:all)
end