禁止的属性错误

时间:2017-09-28 17:03:05

标签: ruby-on-rails

市场是一个带有3列市场表的模型:Name,created_at和updated_at。我正在尝试构建一个简单的管理市场索引视图,我可以使用文本字段来创建市场。我认为我已经适当地设置了market_params,但显然我做错了,因为我在MarketsController #create中得到了Forbidden AttribuesError,它突出了这一行:

class MarketsController < ApplicationController
    def index
        @markets = Market.all
        @market = Market.new
    end

    def create
    @market = Market.new(params[:market])
    if @market.save
        flash[:success] = "Market Created!"
        render 'markets/index'
    else
        render 'markets/index'
    end
end


private
def market_params
    params.require(:market).permit(:name)
end
end

对我所做错的任何帮助都将不胜感激!

这是我的市场总监:

<%= form_for(@market) do |f| %>
  <%= render 'shared/error_messages', object: f.object %>
  <div class="field">
   <%= f.text_area :name, placeholder: "Enter Market name here" %> 
  </div>
  <%= f.submit "Submit", class: "btn btn-primary" %>
  <% end %>

这是我的表格:

{{1}}

2 个答案:

答案 0 :(得分:2)

<强>为什么呢? ForbittionAttributError

Rails不允许直接数据库创建或更新操作而不将白名单挂起。您已经编写了一个名为market_params的方法,但是您没有使用它。您在新方法中直接使用params [:market]。

更改此行

  

@market = Market.new(params [:market])

  

@market = Market.new(market_params)

答案 1 :(得分:2)

现在你正试图从params[:market]创建一个市场。假设您正在使用strong_parameters,则需要执行此操作:

@market = Market.new(market_params)