2016-12-20 7 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'와 (과) 로그인 –