2016-12-20 12 views
1

ユーザーがログインしてイベントを表示できるアプリを開発しました。イベントをクリックすると、そのイベントでページを表示して曲を追加できます。私が抱えている問題は、ソングフィールドに記入してから送信をクリックすると、ソングが追加されているイベントIDが見つからないため、エラーが表示されることです。ユーザーからクリックされたイベントを取得するためにcurrent_eventメソッドを定義するにはどうすればよいですか?これは私のこれまでの曲コントローラでこれまでのことです:Current_event曲を追加する(レール)

class SongsController < ApplicationController 

    def create 
     @song = current_event.songs.build(songs_params) 
     if @song.save 
      flash[:success] = "Song created" 
      redirect_to root_url 
     else 
      flash[:error] = "Failed" 
     end 

    end 

    def destroy 
    end 
    private 

     def micropost_params 
     params.require(:song).permit(:artist, :title, :genre) 
     end 
end 

答えて

1

あなたはネストされたルートを定義する必要があると思います。 routes.rbを上たぶん

、:

resources :events do 
    resources :songs 
end 

そして今、localhost:3000/events/1/songs/new

のような新しい曲へのパスは、あなたがparams[:event_id] = 1

そして、あなたのコントローラ上を持っている、アクションはあなたが呼び出すことができ、作成

current_event = Event.find(params[:event_id]) 
+0

私はこれを試してみてください。結果を教えてください。 – Aaron

+0

ルートイベント/ 1/songs/newを定義すると、曲の新しいページに移動します。しかし、私はイベントのページにすべての曲を表示して入力したい。 current_eventを定義するために、私はSongsControllerの作成アクションでその変数を定義する必要がありますか? – Aaron

+0

[this](http://framgia-tms.herokuapp.com/supervisor/subjects/new)のような何かをしたいですか? 。 'duyet.vn @ gmail.com/12341234'でログインしてください –

関連する問題