2013-01-02 2 views
0

"이메일 스위치"열에 부울 값이 포함 된 사용자 모델이 있습니다. 내보기에서 사용자가 이메일을 "껐다"도록 설정할 수있는 버튼을 만들고 싶습니다. 제출 버튼을 사용하여 사용자 모델의 값을 업데이트 할 수 없습니다.레일 3 : 제출 버튼을 사용하여 모델 속성 업데이트

<%= form_for :user do |f| %> 
     <label>On</label> 
     <%= f.radio_button :email_switch, true %> 
     <label>Off</label> 
     <%= f.radio_button :email_switch, false %> 
     <%= f.submit "Save", :controller => "dashboard_emails", :action => "update", :method => "put" %> 
    <% end %> 


class DashboardEmailsController < ApplicationController 
    before_filter :require_user 

    def index 
    end 

    def update 

    end 

    private 

    def require_user 
    @user = @logged_in_user 
    end 


class User 
    field :email_switch, type: Boolean, default: false 
end 

답변

1

당신은하지 f.submit 호출에 form_for에 인수를 전달해야합니다. 당신이 @user에 할당 된 지속 된 사용자가있는 경우 당신은 할 수 있어야 : 물론

<%= form_for @user do |f| %> 
    <label>On</label> 
    <%= f.radio_button :email_switch, true %> 
    <label>Off</label> 
    <%= f.radio_button :email_switch, false %> 
    <%= f.submit "Save" %> 
<% end %> 

당신은이 작업을 얻을 수 있도록 config/routes.rbresources :users이 필요합니다. 그러면 /users/47에 PUT 요청이 전송되고 작업이 실행됩니다. UsersController

+0

이 양식은 사용자 대시 보드 내부에 배치되므로 http : // localhost : 3000/dashboard/emails로 업데이트되어야합니다. 사용자 ID가 아닙니다. 양식이 올바른 위치에 게시되고 http : // localhost : 3000/users/# {user.id}가 아닌지 확인하는 방법에 대해 혼란스러워합니다. – Smooth