【问题标题】:Forbidden Attributes Error禁止属性错误
【发布时间】:2017-09-29 01:11:31
【问题描述】:

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

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

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

这是我的市场总监:

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 %>

【问题讨论】:

    标签: ruby-on-rails


    【解决方案1】:

    为什么? ForbittionAttributError

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

    改变这一行

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

    @market = Market.new(market_params)

    【讨论】:

      【解决方案2】:

      现在您正试图从params[:market] 创建一个市场。假设您使用的是strong_parameters,则需要改为:

      @market = Market.new(market_params)
      

      【讨论】:

        猜你喜欢
        • 2014-11-08
        • 2011-03-15
        • 2017-05-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多