Link_to_remote与嵌套路由

时间:2010-02-11 19:23:31

标签: ruby-on-rails routing nested link-to-remote

我正在试图弄清楚如何在link_to_remote标记上构建我的路径以容纳嵌套路由。我有一个属于组模型的文章模型,该文章有与之关联的投票(使用Vote_Fu插件)。我首先创建了文章的代码并且它有效,但是在添加组模型和更新所有内容的路径的过程中,下面的链接现在已经破坏了。我知道它正在寻找new_question_path,它将不再起作用,但我无法弄清楚要用它替换它。

<%= link_to_remote "+(#{@article.votes_for})",   
  :update=>"vote", 
  :url => { :controller=>"articles",
            :action=>"vote",  
            :id=>@article.id,  
            :vote=>"for"},
            :html => { :class  => "up" } %>

任何帮助都会很棒。谢谢!

更新:

看起来问题出在我的路线上。我的文章控制器中有一个投票方法,但它不知道要查找它。我将routes.rb文件更改为:

group.resources :articles, :member => { :vote => :get }

看起来问题可能会解决。

1 个答案:

答案 0 :(得分:1)

是的,那个:路由器中的成员选项会将投票操作公开为有效路径。但我想你可能也想考虑添加一个投票模型然后说文章has_many:投票。

然后你会有一个VotesController,你的路由器会有map.resources :articles, :has_many => :votes,允许使用/ articles / 1 / votes等网址。

您可能会认为为投票设置一个单独的模型可能会有些过分,但在应用程序的整个生命周期中,跟踪投票给谁投票等等可能会很有用。

如果您的网站非常小,那么您可能永远不需要该功能。这是在对域进行建模时必须考虑的权衡方式。使用RESTful资源只会突出显示您违反规范的事实:)