26

Rails 4を使用して簡単な作成を試みます

私のコントローラー:

class AdsController < ApplicationController

  def new
    @ad = Ad.new
  end

  def create
    @ad = Ad.new(params[:ad])    
    @ad.save
  end

  def show
    @ad = Ad.find(params[:id])
  end

  def index
    @ads = Ad.first(3)
  end


  private
  def ad_params    
    params.require(:ad).permit(:title, :price, :description)
  end
end

形:

<%= form_for @ad do |p| %>
  <p><%= p.text_field :title %></p>
  <p><%= p.text_field :price %></p>
  <p><%= p.text_area :description %></p>
  <p><%= p.submit %></p>
<% end %>

私の観点からは問題ありませんが、このエラーが発生しましActiveModel::ForbiddenAttributesError た。何が間違っているのですか?

アップデート:

私の問題は、作成アクションの新しいメソッドに間違った値を渡すことでした:解決策はそれに渡すad_paramsことでした

4

4 に答える 4

32

私も同じ問題に直面し、6時間働き、最終的に解決策を得ました。

このコードを試してみてください。Rails 4 では、さまざまな方法で作成を処理するためにこの機能が追加されました。

def new
  @ad = Ad.new
end

def create
  @ad = Ad.create(ad_params)
  @ad.save
end

private

def ad_params
  params.require(:ad).permit(:title, :price, :description)
end
于 2013-10-02T00:07:25.303 に答える
6

params.permitを追加する前に新しい広告を!

   def create
     params.permit!
     @ad = Ad.new(params[:ad])    
     @ad.save
   end
于 2013-12-02T06:00:32.703 に答える