-2

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
4

1 に答える 1