没有路由匹配{:locale =>:en,:action =>“email”,:controller =>“games”}

时间:2012-03-08 13:00:16

标签: ruby-on-rails routes

正如我在标题中所写,当我尝试点击我的游戏页面时,我收到以下错误。

这就是我在games_controller中的内容:

   def email

    respond_to do |format|
       user = @game.user
       email = user.email
       g = GameTrade.game_interest(user)
       g.deliver
       format.html { redirect_to root_url }
       format.json { render json: @game }
    end
   end

这就是我在show.html.erb

中的内容
 <%= button_to "Send Email", :action => 'email'%>

在我的路线页面中,我有线资源:游戏

1 个答案:

答案 0 :(得分:2)

“email”不是资源的标准路由,因此您需要为其添加路由。理想情况下,这将是一个POST请求,因为跟随该链接(按钮)会导致更改发生。最后,您应该坚持使用url帮助程序,而不是指定操作,因为它们会使代码变得有点脆弱。

在你的routes.rb中尝试这样的事情:

resources :games do
  post 'email', :on => :member
end

然后在您的视图中,生成按钮,如下所示:

<%= button_to "Send Email", email_game_path(@game) %>

然后,您需要以常规方式在电子邮件操作中找到游戏,然后才能执行任何操作:

@game = Game.find(params[:id])