2012-11-11 3 views
2

인덱스 페이지의 컨트롤러에 정의 된 메서드를 사용하는 방법을 배우고 싶습니다. 블로그에 '좋아요'버튼을 구현하려고합니다. 모든 게시물이 나열되는 인덱스에서레일 : 인덱스 파일에서 PostController 메서드를 사용하는 올바른 방법

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

PostController, 나는 이런 식으로 뭔가를 시도했다.

<% @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' 



는 또한 (게시물)처럼 시도했습니다.

내 궁극적 인 목표는 아약스 기능으로이 기능을 확인하는 것입니다, 그래서 나는이 경우 "와 같은"방법을 사용하는 올바른 방법은 무엇

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

같은 형태가 될 것으로 예상?

답변

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) 
+0

효과가있었습니다. 고맙습니다. "회원"부분에 대해 더 설명해 주시겠습니까? 또한, "edit"와 "new"메소드가 이렇게 라우팅되었지만 config/routes.rb 파일에 표시되지 않은 방법을 알려주시겠습니까? –

+1

'resources'는'edit'와'new'를위한 매크로와 다른 REST 메소드입니다. 'resources' 블록 안에는 id에 의해 개별 레코드를 가리키는 라우트를 만드는 "멤버"라우트와 그렇지 않은 "콜렉션"라우트를 정의 할 수 있습니다. 자세한 설명은 [here] (http://guides.rubyonrails.org/routing.html)에서 찾을 수 있습니다. – numbers1311407

관련 문제