2013-05-03 34 views
-2

我是Rails.in的新手,我正在创建一个Rails项目,其中Product和Character是模型。我有以下问题。字符中的NoMethodError#new

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) 

注意:在迁移它之前,我已经为名称属性的值创建了字符高度,重量,宽度和颜色。

Q3。如果这样做(即Q2),我想在'产品展示页面中显示角色名称和值。为此,我如何重定向到'show'页面的产品..?

我新,表演characterscontroller创造:

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 

现在好了,进入值中的字符/新字符,然后点击创建按钮,它也会trowing以下错误

ActiveRecord::RecordNotFound in ProductsController#show 
    Couldn't find Product without an ID 

我想在产品/展示中显示角色名称和值。上述错误是阻止我这样做..

我的表演方法的ProductsController:

def show 

@product = Product.find(params[:id]) 

@character = Character.find(:all) 

end 
+1

请你分享你'character_controller'为'new', “创建”和“显示”操作? – rony36 2013-05-03 12:39:56

回答

0
  1. 的类是正确反映一到一对多的关系。
  2. NoMethodError问题似乎与您如何设置模型,路线,控制器&视图有关。

让你的模型说,你有 attr_accessible:ID,:名字(我没有看到这个模型中,这就是为什么错误!)

在角色管理,你需要这样的事:

def new 
    @character = Character.new 
    @product = Product.find(params[:character_id]) 
end 

在视图(app /视图/产品/ new.html.erb),您可以添加链接,新的字符: <%的link_to “字符”,new_product_character_path(产品)%>

上述假设,你设定的路线正确具有以下在你的config/routes.rb文件: “资源:产品” “资源:字符”
+1

:谢谢你的回答。我希望那些作品。 – Pavan 2013-05-09 06:14:31

相关问题