我是Rails的新手。我正在创建一个Rails项目,其中Product和Character是模型。我有以下问题。
Q1。两种模型之间的给定关联是否正确?
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),我想在产品的展示页面中显示角色名称和价值。为此,我如何重定向到'show'产品页面??
我的charactercontroller for new,show和create:
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
现在,在输入字符/ new中的字符值并单击“创建”按钮后,它会显示以下错误
ActiveRecord::RecordNotFound in ProductsController#show
Couldn't find Product without an ID
我想在products / show中显示角色名称和值。以上错误阻止我这样做..
我在productcontroller中的show方法:
def show
@product = Product.find(params[:id])
@character = Character.find(:all)
end
答案 0 :(得分:0)
让我们在你的模型中说 attr_accessible:id,:name(我在你的模型中没有看到这个,这就是错误的原因!)
在角色控制器中你需要这样的东西:
def new
@character = Character.new
@product = Product.find(params[:character_id])
end
在视图(app / views / products / new.html.erb)中,您可以添加新字符的链接: &lt;%link_to“Character”,new_product_character_path(product)%&gt;
假设您通过在config / routes.rb中包含以下内容来设置路由: “资源:产品” “资源:人物”