如何在 rails 控制器中调用模型方法

How to call model method in rails controller

您好,我必须在我的控制器和视图中调用模型方法。所以为此我做了这个:

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

并在 products/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 %>

为什么我给它它给我错误 ActiveRecord::DangerousAttributeError in ProductsController#new 请指导如何解决这个问题。在此先感谢您的帮助:)

使用这个 gem:

gem 'safe_attributes'

然后

bundle install

另见 gem's documentation,你就完成了:)

请更改您的模型方法写入此

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

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