2011-09-30 5 views
0

좋아, 간단한 질문이 있습니다. 나는 RoR을 처음 사용하고 아이템을위한 비계를 만들었다. 그런 다음, 누를 때 카운터를 증가시키는 링크를 추가하려고했습니다. 내가 문제가되는 것은 라우팅입니다. 파괴/삭제 링크 및 방법 후에이 기능을 모델링했습니다.Rails3 - 카운터를 증가시키는 방법으로의 경로가 필요합니다.

index.html.erb :

... 
    <td><%= link_to 'Destroy', post, method: :delete %></td> 
    <td><%= link_to 'increment', post, method: :increment%></td> 
    ... 

post_controller.rb : 나는 시도하고 링크를 클릭하면

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

    respond_to do |format| 
     format.html { redirect_to post_url } 
     format.json { head :ok } 
    end 
    end 

, 나는 라우팅 오류가 발생합니다 :

여기 내 코드입니다
Routing Error 

    No route matches [POST] "/posts/25" 

누락 된 단계가 있습니까? 이 기능을 사용하려면 몇 가지 라우팅 정보를 추가해야합니까?

답변

3

좋아, 필요한 몇 가지 수정 사항이있다, 여기에 나와 함께있는 걸 다음 link_to 함수의 :method PARAM 컨트롤러 방법을 참조하지 않습니다

, 그것은 HTTP 메소드를 참조한다. , '포스트'그래서 사용할 수있는 값이 될 것이다 '삭제': 우리가 아마 우리가 일치해야합니다 증분 링크에 대한 :post:method을 설정하려면이 경우 http://api.rubyonrails.org/classes/ActionView/Helpers/UrlHelper.html#method-i-link_to

더 많은 정보를 우리가 지금 만들 경로와

작성한 투표 작업에 액세스하려면 해당 투표를 route 파일에 추가해야합니다. 당신은 아마 이런 일이 :

우리는 포스트 자원의 멤버에 적용하는 행동 (투표)를 추가해야합니다, 그래서 우리가이에 대한 변경
resources :posts 

: 이제

resources :posts do 
    member do 
    post 'vote' 
    end 
end 

을 올바른 경로가 있다고 가정하면 link_to 도우미의 경로 도우미 메서드를 사용할 수 있습니다 (명령 줄에서 rake routes으로 실행되는 전체 경로 목록 참조). 그러므로 link_topostvote_post_path(post)으로 대체하십시오. 우리가 :method에 대한 우리의 이전 변경 사항을 포함하는 경우 우리가 얻을 :이 당신을 위해 어떤 빈칸을 채워하는 데 도움이

<%= link_to 'increment', vote_post_path(post), method: :post %> 

희망!

+0

감사합니다. 그랬어! – user972276

0

config/routes.rb 파일에 자원으로 게시물을 추가하지 않았다고 가정합니다. 다음 행을 추가하십시오.

map.resources :posts 

변경 한 후 서버를 다시 시작해야 할 수 있습니다.

관련 문제