我不知道发生了什么,但是当我按下我的按钮显示帖子时,它会重定向到索引操作,而不是 show 。
#suggestions_controller.rb
def show
@suggestion = Suggestion.find(params[:id])
end
#index.html.erb
<% @suggestions.each do |suggestion| %>
... #other code
<li><%= link_to 'Comments', suggestion_path(suggestion), id: 'comments' %></li>
<% end %>
每次按评论按钮,它都会重定向到索引。我的头脑旋转为什么会发生这种情况。我完全相信suggestion_path(suggestion)
(就我的路线而言)是show
行动的正确路径。
感谢您的帮助。
答案 0 :(得分:0)
link_是正确的,它指向您想要的路线,但它与您在服务器上收到的呼叫不对应,有一个参数type =&gt; 3这没有任何意义,对我来说你必须按错了链接
就好像没有使用suggestion_path(建议)而是指向带有s的suggestions_path(建议)并且作为类型发送参数=&gt; 3
检查应用的link_to
答案 1 :(得分:-1)
我有一个顿悟,就是几天前我最近在StackOverflow上做过的post。
我将路线更改为
#routes.rb
get 'suggestions/:type', to: 'suggestions#index'
#suggestion_controller.rb
if params[:type].nil?
@suggestions = Suggestion.order(:cached_votes_up => :desc)
else
@suggestions = Suggestion.order(:cached_votes_up => :desc).where(:suggestion_type => params[:type])
end
以更优雅的方式取得我所有的19名雇佣兵。
这非常有效,但当我点击评论以显示特定建议时,它会自动路由到suggestions/:type
,该#routes.rb
get 'suggestions/proxy', to: 'suggestions#index'
get 'suggestions/aimee', to: 'suggestions#index'
get 'suggestions/arty', to: 'suggestions#index'
...
#suggestion_controller.rb
case request.env['PATH_INFO']
when '/suggestions/proxy'
@suggestions = Suggestion.all.where(:suggestion_type => 'proxy')
when '/suggestions/aimee'
@suggestions = Suggestion.all.where(:suggestion_type => 'aimee')
when '/suggestions/arty'
@suggestions = Suggestion.all.where(:suggestion_type => 'arty')
...
else
@suggestions = Suggestion.all
end
指向索引操作。这样做的全部目的是在每次点击特定雇佣兵时过滤我的数据库。
为了解决这个问题,我又回到了我的长篇版本:
WIKI_MARKDOWN_SANITIZE_HTML
现在我的按钮按预期进入 show 动作。
尽管我讨厌这个版本,但我仍然很难找到以更有效的方式构建路由的任何其他优雅方式。