0

ユーザーがコースに登録できるようにボタンを作成したいと思います。登録モデルはユーザーとコースに属し、登録を追跡する必要があります。

コースページにボタンフォームとして次のコードを表示しています(問題ないようです):

<% @enroll = current_user.enrollings.build(course_id: @course.id) %>
<%= form_for(@enroll) do |f| %>  
    <div><%= f.hidden_field :course_id %></div>
    <%= f.submit "Enroll", class: "btn btn-large btn-primary" %>
<% end %>

登録用のリソース ルートがあり、ユーザーがボタンをクリックすると、ページは /enrollings に移動します。

これは、登録コントローラーのコードです。

def create    
@course = Course.find(params[:course_id])
current_user.enroll!(@course)
end

ボタンをクリックすると、次のエラー メッセージが表示されます。

ActiveRecord::EnrollingsController#create の RecordNotFound

ID のないコースが見つかりませんでした

フォームで course_id を渡さないのはなぜですか? コントローラーを正しくセットアップするにはどうすればよいですか?

4

1 に答える 1

1

代わりにこれを試してください:

<div><%= hidden_field_tag "course_id", @course.id %></div>
于 2012-07-24T17:46:02.183 に答える