I’d like to learn how to use the methods defined in the controller in the index page.
I’m trying to implement “like” button on my blog.
PostController
def like
@post = Post.find(params[:id])
@post.like += 1
@post.save
end
In the index where all the posts are listed, I tried something like this.
<% @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 %>
I got the idea by looking at the code,
<%= link_to 'make a new post', new_post_path %>
<%= link_to 'Edit', edit_post_path(post) %>
I thought the way to use methods in the controller in the index page was
(method in PostController)_post_path, but it seems I got it wrong.
undefined local variable or method `like_post_path'
I’ve also tried like(post).
My ultimate goal is to make this function as an ajax function, so I expected it to be a form like
<% link_to_function 'like', like_post, remote: true %>
What’s the right way of using the method “like” in this case?
You’d need to define a named route to make this work. Like: