2011-11-22 2 views
0

다른 모델의 메소드에 링크 할 수 있습니까? 버튼 누름에서 실행하려면, 또는 컨트롤러의 동작과 같은 다른 방법이 있습니까? 직원 모델 내부button_to를 사용하여 메소드에 링크하면 할 수 있습니까?

방법 : 다른 모델의 내부보기

def clearleave 
self.where("grade = '1'").update_all(:leave_balance => 22) 
self.where("grade = '2'").update_all(:leave_balance => 25) 
self.where("grade = '3'").update_all(:leave_balance => 30) 
self.where("grade = '4'").update_all(:leave_balance => 35) 
end 

: 모델 뷰 컨트롤러 패턴 (MVC)에

<%=button_to "Clear absences", {:controller => :staffs, :action => :clearleave} %> 

답변

1

레일 기지. 즉, 브라우저 (예 : 브라우저)의 요청은 컨트롤러에서 처리합니다. 컨트롤러는 모델에서 필요한 데이터를 수집하여이를 표시하기 위해 뷰로 전달합니다.

경로 :

resources :staff do 
    member do 
    post :clearleave 
    end 
end 

컨트롤러 :

# StaffController 
def clearleave 
    @staff = Staff.find(params[:id]) 
    @staff.clearleave # this calls the method in your model 
    # here you could redirect to e.g. the show page for your staff 
    # redirect_to staff_path(@staff), :notice => "Cleared successfully" 
end 

이보기에서 버튼은 다음과 같습니다

<%= button_to "Clear absences", clearleave_staff_path(@staff) %> 
<!-- not sure if a ", :method => :post" is required here as well --> 
<!-- in rails 3 a link_to should also work --> 
<%= link_to "Clear absences", clearleave_staff_path(@staff), :method => :post %> 
당신은 아마 목표로 무엇

이 같은 것입니다

+0

가장 도움이됩니다. 감사합니다. – arcanine

관련 문제