在Rails中,如何编写一个导致“/ path / id”格式的link_to表达式?

时间:2018-02-05 19:50:40

标签: ruby-on-rails routes ruby-on-rails-5 link-to

这个问题适用于Rails 5.我有一个模型

class Vote < ApplicationRecord
  belongs_to :person

然后是包含

的config / routes.rb文件
  resources :votes

问题是我想创建路径

/vote/person_id

其中“person_id”实际上是人物对象的ID而不是投票对象。我想我可以像下面这样写一个“link_to”表达式来实现这个

<%= link_to person.name, votes_path(person), :class => 'unvotedPersonLink' %>

但正在发生的是生成的链接

/votes.11

如何调整我的“link_to”或路由文件,以便我能以我想要的格式生成链接?

3 个答案:

答案 0 :(得分:0)

如果要查看所有路由,则应运行rails routes命令。您的投票资源如下:

votes_path returns /votes
new_vote_path returns /votes/new
edit_vote_path(:id) returns /votes/:id/edit 
vote_path(:id) returns /votes/:id 

您可以在以下链接中查看有关Rails路线的更多信息:

http://guides.rubyonrails.org/routing.html

答案 1 :(得分:0)

这可能会解决路由问题。

的routes.rb

  

资源:votes,param :: person_id

视图

  

votes_path(person_id:person.id)

答案 2 :(得分:0)

在您的观看中,您需要传递人员ID,如下所示:

votes_path(person: person)

或者像这样:

votes_path(person, @vote)

或者:

votes_path(person: current_user)

另外,如果您想使用人员ID添加投票,我建议您使用current_user

通过控制器注入人员ID