2015-05-15 84 views
1

嗨我必须在我的控制器和视图中调用模型方法。所以,为了这个,我已经做到了这一点:如何在导轨控制器中调用模型方法

category.rb

def self.category_list 
    category = self.all.collect { |m| [m.name, m.id] } 
    return category 
end 

products_controller.rb

def new 
    @product = Product.new 
    @category = Category.category_list 
end 

和产品/ new.html.erb

<%= form_for @product, action: "create", :html => {:class => "form-group"} do |f| %> 
     <div class="fields"> 
      <%= f.label :model_name %> 
      <%= f.text_field :model_name, :class => "form-control" %> 
     </div> 
     <div class="fields"> 
      <%= f.label :model_number %> 
      <%= f.text_field :model_number, :class => "form-control" %> 
     </div> 
     <div class="fields"> 
      <%= f.label :model_number %> 
      <%= f.select(:category_id, @category, :prompt => 'Select') %> 
     </div> 
     </br> 
     <div class="actions"> 
      <%= f.submit "Submit", :class => "btn btn-success" %> 
     </div> 
<% end %> 

whem上午给它这给我错误ActiveRecord::DangerousAttributeError in ProductsController#new 请指导如何解决这个问题。预先感谢帮助:)

+3

你的问题是什么? – spickermann

+0

'category_list'方法应该是简单的oneliner:'pluck(:name,:id)'。在Ruby中最后一行是从方法返回的内容,您不需要在这里指定'return' –

+0

编辑我的问题 – railslearner

回答

0

请更改模型方法写入此

def self.category_list 
    Category.all.collect { |c| [c.name, c.id] } 
    end 

并且您正在使用field model_name,因此仅仅因为它给出了Dangerous属性错误的错误,所以请将其更改为名称希望这将起作用。

1

使用这种宝石:

gem 'safe_attributes' 

然后

bundle install 

也看到gem's documentation和你做:)

相关问题