当用户访问特定控制器上的show动作时,使用params条件显示link_to

时间:2012-11-02 13:52:25

标签: ruby-on-rails ruby-on-rails-3.2

如果查看'post_controller / show',如何设置条件。

如果用户正在查看帖子,我希望在标题导航上显示“修改”按钮,而不设置不同的布局,只需依靠现有的_header.html.erb进行导航。

# Header navigation partial _header.html.erb
<%= link_to 'Edit post', edit_post_path(@post) %>

我知道我可以拿一个参数并设置类似的子句:

<% if params[:id] %>
  <%= link_to 'Edit post', edit_post_path(@post) %>
<% end %>

上述问题是,如果您访问与Post模型无关的其他路线,则会导致异常undefined method 'edit_post'

如果我可以摆脱许多布局和偏好,但是如果建议我应该在这个场景中使用布局和部分,那么我会。

非常感谢所有人。

1 个答案:

答案 0 :(得分:2)

# Header navigation partial _header.html.erb
<%= yield(:edit_link) %>

#In your post_controller/show view :
<% content_for :edit_link, link_to('Edit post', edit_post_path(@post)) %>

就是这样。对于不同的模型等,您可以随时更改:edit_link的内容......