如何使用其ID来link_to编辑特定帖子?我需要硬连线

时间:2018-04-27 18:42:13

标签: ruby-on-rails

我希望任何用户都可以编辑特定帖子的问题。我没有在这个页面上循环帖子,所以我必须将post_id硬连接为param。 这就是我试过的:

<%= link_to "Add a question", edit_post_path(@post[:id => 3]) %>

<%= link_to "Add a question", edit_post_path(@post.3) %>

..., edit_post_path(@post.params[:id == 3])

3 个答案:

答案 0 :(得分:1)

Rails很棘手且很有帮助。将对象传递给posts_path时,它所做的就是将ID从对象中拉出来。

因此,如果@post中记录的ID为2,那么这三行都会做同样的事情:

posts_path(@post)
posts_path(@post.id)
posts_path(2)

答案 1 :(得分:0)

最后我尝试了这个并且它有效。我不知道它是否真的是Rails方式。

<%= link_to "Add a question", edit_post_path(@post=Post.find(3)) %>

感谢您的期待!

答案 2 :(得分:0)

您可以简单地将@post传递到路径,前提是您的控制器已初始化@post

<%= link_to "Add a question", edit_post_path(@post) %>

<强>更新

如果您已定义@posts,并且它包含所有帖子,并且您正在迭代它以显示各个帖子,并且我假设您正在执行此类操作

<% @posts.each do |post| %>
  <div class="post">
    <h3><%= post.title %></h3>
    <p><%= post.body %></p>
    <!-- You'll pass local post variable to it. to get the link -->
    <%= link_to "Add a question", edit_post_path(post) %>  
  </div>

<% end %>

您仍然可以访问各个帖子及其ID。因此,您可以轻松创建用于向其添加新问题的链接。