2

我想了解如何在索引页面中使用控制器中定义的方法。我正在尝试在我的博客上实现“喜欢”按钮。

后控制器

def like
@post = Post.find(params[:id])
@post.like += 1
@post.save
end

在列出所有帖子的索引中,我尝试了类似的方法。

<% @posts.each do |post| %>
 <tr>
  <td><%= post.name %></td>
  <td><%= post.created_at.strftime("%Y/%m/%d, %I:%M%p") %></td>
  <td><%= post.view %></td>
  <td><%= link_to 'like', like_post_path %></td>
  <td>hate</td>
</tr>
<% end %>

我通过查看代码得到了这个想法,

<%= link_to 'make a new post', new_post_path %>
<%= link_to 'Edit', edit_post_path(post) %>

我认为在索引页面中使用控制器中的方法的方式是
(postController 中的方法)_post_path,但似乎我弄错了。

undefined local variable or method `like_post_path'


我也试过喜欢(帖子)。

我的最终目标是让这个函数成为一个 ajax 函数,所以我希望它是一个像

<% link_to_function 'like', like_post, remote: true %>

在这种情况下,使用“like”方法的正确方法是什么?

4

1 回答 1

2

您需要定义一个命名路由才能完成这项工作。像:

# in config/routes.rb
resources :posts do
  member do
    get 'like'
  end

  # OR
  get 'like', :on => :member
end

# in `rake routes` this would show up as:
like_post GET    /posts/:id/like(.:format)  posts#like

# you'd reference in a view like:
like_post_path(@post)
于 2012-11-11T04:15:50.703 回答