我开发了一个应用程序,用户可以登录并查看他们的活动。可以单击该事件,并在事件显示页面中添加歌曲。我遇到的问题是,当你填写歌曲字段后点击提交它会给我一个错误,因为它找不到歌曲添加到的事件ID。如何定义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
答案 0 :(得分: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])