2012-07-29 4 views
0

안녕하십니까, 루비 온 레일즈 애플리케이션에서 나는 승리와 손실을위한 스탯 카운터를 만들려고합니다. 이 통계는 항상 내 페이지의 사이드 바에 표시됩니다. 이 값들은 Stats라는 모델을 사용합니다. 통계는 모든면에서 표시하고 싶기 때문에 전역 적으로 사용할 수 있어야합니다. 그래야 application_helper.rb에 저장됩니다. 또한 두 가지 작업이 있습니다. 관리자에게만 표시되는 추가/삭제 링크 추가를 클릭하면 호출해야합니다. 링크를 클릭하면 기본 페이지로 리디렉션됩니다. 현재 사용자가 사이트에 들어가거나 새로 고칠 때마다 두 카운터가 모두 증가합니다. 좀 도와주세요, 지금 몇 시간 동안이 문제를 해결하려고하고 있는데 아직 이해가 안됩니다.레일 3은 link_to로 내 카운터 값을 증가시킵니다.

내 application_helper

module ApplicationHelper 

def stats 
    @stats = Stats.find(1) 
end 
def addwin 
    @stats = Stats.find(1) 
    @stats.update_attribute(:wins, @stats.wins+1) 
end 

def addloss 
    @stats = Stats.find(1) 
    @stats.update_attribute(:loss, @stats.loss+1) 

end 

사이드가 위치한 내 application.html.erb 파일의 추출물 : 누군가가 나를 도울 수 있다면

<tr><td>Dotards StatsTracker</td></tr> 
    <tr><td>Wins: </td><td style="color:green"><%= stats.wins%></td></tr> 
    <tr><td>Losses: </td><td style="color:red"><%= stats.loss%></td></tr> 

    <hr> 
    </table > 
    <%if user_signed_in? && current_user.admin? %> 
     <small><%= link_to "Add Win", news_index_path(addwin) %>|<%= link_to "Add Loss", news_index_path(addloss)%></small> 
    <% end %> 

좋지 않을까 왜냐하면 나는 내가 뭘 할 수 있는지 모른다. 미리 감사드립니다.

답변

0
news_index_path(addwin) 

은 페이지 생성시 직접 add win 메서드를 호출하므로 카운터가 증가합니다.

적절한 컨트롤러에 두 가지 방법 (아마도 news_controller?)과 같이 설정/routes.rb의 경로를 만들

이동 :

match '/addwin', to: 'news#addwin' 

는 당신이 다음과 같이 사용할 수있는 경로 도우미 얻을 :

link_to "Add Win" addwin_path 

run rake routes 생성 된 도우미 이름을 확인하십시오.

추가 : 또한 Singleton Stat를 모델로 간주하고 컨트롤러에서 방금 사용하는 메서드를 정의합니다.

+0

그러나 왜 'news_index_path (addloss)'가 페이지 생성시 감소하지 않는가? – gabrielhilal

+0

페이지의 모든 사이트에서 데이터에 액세스 할 수 있습니까? 왜냐하면 뉴스 페이지에 표시되기를 원하지 않기 때문입니다. – dhartwich

+0

모델에 넣는다면? 물론, 그것이 바로 모델입니다. 당신은 "순간에 두 카운터가 매번 증가한다."라고 쓴다. 그리고 그것은 두 함수 모두를 호출하는 코드에서 기대할 것이다. – bento

관련 문제