2011-08-19 3 views
3

내 activerecord 데이터베이스의 부울 값을 업데이트하는 button_to 문을 작성하려고합니다. 여기에 내가 뭘하려입니다 : 내가 할 노력하고있어Rails 3에서는 어떻게 부울 값을 변경하기 위해 button_to를 사용합니까?

<%= button_to "To Amazon", :controller => 'payments', :true => @payment.to_amazon, :method => :put %> 

더 큰 그림은 지불 객체를 업데이트하고 아마존 지급와 통신 할 수있는 보석 송금에 대한 개인 메서드 호출을 트리거하는 버튼이 있습니다. 따라서 :

1) 어떻게 부울을 업데이트하기 위해 button_to를 사용합니까?

2) 컨트롤러에서 개인 메소드에 액세스하기 위해 부울을 변경하는 것이 좋습니까?

답변

4

당신이 할 수있는 일은 AJAX를 사용하여 컨트롤러에 콜백하여 해당 부울을 전환하는 것입니다. 이 경우에는 링크 나 체크 박스를 대신 사용 하겠지만, 결국 큰 문제는 아닙니다. 이 작업을 수행하는 방법에 대한 예제 코드가 필요하면 알려주십시오.

내가 대답 작업을 지정에 대한 similar question이 있었다, 나는 다음과 같이 거기 LINK_TO을 사용 :
link_to "Profile", :controller => "profiles", :action => "show", :method => :get, :id => @profile 

그래서 당신이 작업을 지정할 수 있지만 그 링크 만이 아닌 버튼으로 작동합니다. 그러나 업데이트를 수행 한 특별한 조치를 취할 수 있습니다.

보조 질문에 대해서는 정확하게 이해하면 @payment 개체에 부울을 설정하고 개인 메서드를 호출 한 다음에 하시겠습니까? 데이터베이스에 부울을 저장한다고 가정합니다. 그래서 그러므로 당신의 컨트롤러 액션이 뭔가를 할 수 있습니다 :

payment.rb에 (당신의 부울 열을 가정하는 것은 단지 더 나은 가짜 이름의 부족에 대한 "boolean_col"라고합니다) 그런 다음
@payment.call_amazon_payment_method 

:

def call_amazon_payment_method 
    new_val = self.boolean_col? false : true 
    self.update_attributes(:boolean_col => new_val) 
    # if that alone will trigger your private method, you're done, or: 
    self.private_amazon_payment_method 
end 

나는 당신의 질문을 올바르게 이해하고 당신을 우아한 해결책으로 이끌 수 있었으면 좋겠습니다.

관련 문제