Current_event添加歌曲(rails)

时间:2016-12-20 06:43:59

标签: ruby-on-rails

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

1 个答案:

答案 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])