【问题标题】:Devise::SessionsController (bug?) - Unpermitted parametersDevise::SessionsController (bug?) - 不允许的参数
【发布时间】:2017-01-29 19:02:03
【问题描述】:

我遇到了Devise Parameter Sanitizer "For" Method Not Found Rails 5中出现的错误

但是在阅读解决方案后,控制台中出现了一个新错误;我正在尝试将 simple_form 与 Ruby 2.3.3p222 和 Rails 4.2.3

中的设计一起使用

日志:

Started POST "/users/sign_in" for ::1 at 2017-01-29 19:53:01 +0100
Processing by Devise::SessionsController#create as HTML
  Parameters: {"utf8"=>"✓", "authenticity_token"=>"vIcpPg5diOGlDzcwYfEW+SEnY75IQPdCDvcoOzrbNMk4ezv8/f4wkhCLPdFbJ6E4RG19e1+ikif5/GLpQPH0HQ==", "user"=>{"name"=>"Mike", "surname"=>"Nast", "email"=>"mikenast@gmail.com", "password"=>"[FILTERED]", "password_confirmation"=>"[FILTERED]"}, "commit"=>"Sign up"}
  User Load (1.0ms)  SELECT  `users`.* FROM `users` WHERE `users`.`email` = 'josecr@gmail.com'  ORDER BY `users`.`id` ASC LIMIT 1
Completed 401 Unauthorized in 25ms (ActiveRecord: 1.0ms)
Processing by Devise::SessionsController#new as HTML
  Parameters: {"utf8"=>"✓", "authenticity_token"=>"vIcpPg5diOGlDzcwYfEW+SEnY75IQPdCDvcoOzrbNMk4ezv8/f4wkhCLPdFbJ6E4RG19e1+ikif5/GLpQPH0HQ==", "user"=>{"name"=>"Mike", "surname"=>"Nast", "email"=>"mikenast@gmail.com", "password"=>"[FILTERED]", "password_confirmation"=>"[FILTERED]"}, "commit"=>"Sign up"}
Unpermitted parameters: name, surname, password_confirmation

我的控制器中还有:

class Users::RegistrationsController < Devise::RegistrationsController
   prepend_before_action :require_no_authentication, only: [:new, :create, :cancel]
   prepend_before_action :authenticate_scope!, only: [:edit, :update, :destroy]
   prepend_before_action :set_minimum_password_length, only: [:new, :edit]

   before_action :configure_permitted_parameters, if: :devise_controller?

   def configure_permitted_parameters                 
     devise_parameter_sanitizer.permit(:sign_up, keys: [:name, :surname, :password_confirmation])                 
   end

在 sign_up 视图中,我有以下一个:

<%= simple_form_for(resource, :as => resource_name, :url => session_path(resource_name)) do |f| %>
              <p><br/>

     <%= f.error_notification %>

        <div class="wrapper wrapper-content  animated fadeInRight">
          <div class="row">
            <div class="col-sm-8">
              <div class="ibox">
                <div class="ibox-content">

                  <div class="form-inputs">
                    <%= f.input :name, :label => 'First Name', required: true, autofocus: true %>
                    <br>
                    <%= f.input :surname, :label => 'Last Name', required: true, autofocus: true %>
                    <br>
                    <%= f.input :email, :label => 'Email', required: true, autofocus: true %>
                    <br>
                    <%= f.input :password, :label => 'Password', required: true %>
                    <br>
                    <%= f.input :password_confirmation, :label => 'Confirm Password', required: true %>
                    <br>
                  </div>

                  <div class="form-actions">
                    <%= f.button :submit, "Sign up" %>
                  </div>
                  <% end %>

我有什么遗漏或做错了吗?

【问题讨论】:

  • 我猜 :sign_up 和 :sign_in 是两个完全不同的设计动作。您发布的日志似乎与登录有关
  • 可能是某个地方的网址有误
  • 我正在尝试注册
  • 发生了一些事情,因为当我使用 form_for(resource, as: resource_name, url: registration_path(resource_name)) 时,我可以注册用户但不能使用 simple_form_for

标签: ruby-on-rails devise simple-form


【解决方案1】:

您的问题类似于我试图回答的另一个问题here here

尝试将:url =&gt; session_path(resource_name) 替换为:url =&gt; registration_path(resource_name) 或类似名称 - 如devise/shared/_links.html.erb 文件中指定的那样。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-24
    • 2019-07-15
    • 1970-01-01
    相关资源
    最近更新 更多