2017-07-04 15 views
1

私は、利用規約をチェックボックスに追加しようとしています。 だから、招待が送り出されると、エンジニアは招待を受け入れるリンクをクリックすると、下記のフォームに到着:Devise Invitable利用規約

<h2><%= t 'devise.invitations.edit.header' %></h2> 

<%= simple_form_for resource, as: resource_name, url: invitation_path(resource_name), html: { method: :put } do |f| %> 
    <%= devise_error_messages! %> 

    <%= f.hidden_field :invitation_token %> 

    <%= f.input :first_name %> 
    <%= f.input :last_name %> 

    <%= f.input :password %> 
    <%= f.input :password_confirmation %> 

    <%= f.input :terms_of_service, as: :boolean, required: true, label: ("I agree to the #{link_to 'Terms of Service', page_path('terms'), target: :_blank}").html_safe %> 

    <%= f.button :submit, t("devise.invitations.edit.submit_button") %> 
<% end %> 

私のモデルは次のとおりです。

class Engineer < ApplicationRecord 
    devise :invitable, :database_authenticatable, :registerable, 
     :recoverable, :rememberable, :trackable, :validatable 

    attr_accessor :terms_of_service 
. 
. 
. 
    validates_acceptance_of :terms_of_service, if: :invitation_accepted_at?, acceptance: true, allow_nil: false 

私はカスタム工夫コントローラを持っています

class CustomDeviseController < ActionController::Base 
    before_action :configure_permitted_parameters, if: :devise_controller? 
. 
. 
. 
    protected 

    def configure_permitted_parameters 
    devise_parameter_sanitizer.permit(:account_update, keys: [:first_name, :last_name]) 
    devise_parameter_sanitizer.permit(:accept_invitation, keys: [:first_name, :last_name, :terms_of_service]) 
    end 

「サービスの条件を受け入れる必要があります」というフォームエラーが表示され、検証が実行されていることがわかります。問題は、サービス条件がゼロであるために失敗し、検証が失敗するように見えます。チェックボックスにチェックを入れても、それが合格ではなく、検証に合致しない理由がわかりません。 paramsハッシュが生成さ

UPDATED

は--- ---です:私は、顧客の工夫コントローラを持っていただけでなく、技術者の下でinvitablesのものを間隔名前だったので

{"utf8"=>"✓", "authenticity_token"=>"aoGCMoYRcmJ2EmpM8L+UmQQcB99FScgA6nFM0kY+53dxDodCZDislej48+lBL4Qcb5ZgAcGHyd1A+3qkIol6KA==", "engineer"=>{"invitation_token"=>"e9oVkxuYMtX9Fzxao7xR", "first_name"=>"sad", "last_name"=>"test", "password"=>"[FILTERED]", "password_confirmation"=>"[FILTERED]", "terms_of_service"=>"0"}, "commit"=>"Create Account"} 
Unpermitted parameter: :terms_of_service 
+2

フォーム送信時に生成されているparamsハッシュを投稿できますか? – Pavan

+0

さて、私はトリガされたアクションが更新されていることを確認します。 'account_update'パラメータに':terms_of_service'を入れてみてください。 – Pavan

+0

まだ運がありません。 validates_acceptance_ofでallow_nil:falseを削除すると、チェックボックスがオフになっていても渡されます – rmaspero

答えて

0

が判明します。私は間違ったファイルでparamsを許可していました。

代わりにEngineers :: InvitationsControllerで許可する必要がありました。

関連する問題