0

user_sponsorshipで未定義のメソッドエラーが発生する

app / controllers / user_sponsorships_controller.rb:7:in `new '

これはnew.html.erbです:

<% if @event %>
<%= form_for @user_sponsorship, method: :post do |form|  %>
<div class="mike">
<%= form.hidden_field :event_id, value: @event %>
<%= submit_tag "Yes, sponsor event", class: 'btn btn-success' %>
<%= link_to "Cancel", event_path(@event), class: 'btn btn-default'%>
</div>
<% end %>
<% end %>

これはコントローラーです:

class UserSponsorshipsController < ApplicationController
 before_filter :authenticate_user!, only: [:new]

def new
    if params[:event_id]
        @event = Event.find(params[:event_id])
        @user_sponsorship = current_user.user_sponsorship.new(event: @event)
        else
        flash[:error] = "Event required"
     end
end
end

そしてここにモデルがあります:

class UserSponsorship < ActiveRecord::Base
belongs_to :user
belongs_to :event

attr_accessible :user, :event
end

お分かりのように、私はRailsにかなり慣れていません。よろしくお願いします

4

1 に答える 1

1

エラーはおそらくこの行が原因です

@user_sponsorship = current_user.user_sponsorship.new(event: @event)

user(おそらく)has_many user_sponsorshipsなので、行は

@user_sponsorship = current_user.user_sponsorships.new(event: @event)

複数形を使用します。これは、関連付け名でもある必要があります(レールの規則に従う場合)。

于 2013-03-19T03:40:52.243 に答える