2017-09-28 26 views
1

マーケットは、3つの列(名前、created_at、およびupdated_at)を持つマーケットテーブルを持つモデルです。私は市場を作成するためにテキストフィールドを使用できる単純な管理市場インデックスビューを構築しようとしています。私は適切market_paramsを設定していたと思ったが、どうやら私が何か間違ったことをやっている、私が作成MarketsController#で禁止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 %> 

答えて

2

なぜ? ForbittionAttributError

Railsでは、ホワイトリストに登録されていないパラメータを直接データベースに作成または更新することはできません。あなたはmarket_paramsというメソッドを書いていますが、それを使っていません。新しいメソッドでparams [:market]を直接使用しています。

変更するには、このライン

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

@market = Market.new(market_params)

2

今すぐ作成しようとしていますparams[:market]からの市場。 strong_parametersを使用している場合は、代わりにこれを行う必要があります。

@market = Market.new(market_params) 
関連する問題