0

フォームを送信しようとすると、次のエラーが発生します。Couldn't find Event without an ID

コントローラーは次のとおりです。

def create
@event = Event.find(params[:event_id])
@event_sponsorship = EventSponsorship.new(params[:event_sponsorship])
@event_sponsorship.sponsor_id = current_user.id
@event_sponsorship.event_id = @event

respond_to do |format|
  if @event_sponsorship.save
    format.html { redirect_to @event_sponsorship, notice: 'Event sponsorship was successfully created.' }
    format.json { render json: @event_sponsorship, status: :created, location: @event_sponsorship }
  else
    format.html { render action: "new" }
    format.json { render json: @event_sponsorship.errors, status: :unprocessable_entity }
  end
end
end

フォームは次のとおりです。

<%= simple_form_for(@event_sponsorship) do |f| %>
<%= f.error_notification %>

<div class="signin">
<%= f.hidden_field :event_id, value: @event %>

 <%= f.hidden_field :sponsor_id, value: current_user.id %>

<%= f.button :submit, :class => "btn btn-success btn-block", value: "Yes" %>
</div>
<% end %>

このcreateメソッドではevent_id、URL から を見つける必要があります。どこが間違っていますか?

4

1 に答える 1

0

サーバーコンソールに表示されるようにエラーを投稿すると、パラメーター「event_id」が(おそらく)「event_sponsorship」のサブキーであることがわかります

これを試して:

@event = Event.find(params[:event_sponsorship][:event_id])

また、次のコードを使用する必要がある可能性さえあります。

@event = Event.find(params[:event_sponsorship].delete(:event_id))

これにより、パラメータから「event_id」が削除され、EventSponsorship.newエラーなしで動作できるようになります

于 2013-03-20T23:08:41.367 に答える