市场是一个带有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}}
答案 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)