【问题标题】:uninitialized constant ApplicationController::PermittedParams strong parameters未初始化常量 ApplicationController::PermittedParams 强参数
【发布时间】:2015-06-23 00:20:06
【问题描述】:

不知道我哪里错了,我搜索了很多谷歌搜索,也在 SO 但我不明白我做错了什么。

我的应用程序控制器

class ApplicationController < ActionController::Base

helper_method :clipboard, :current_user, :signed_in?, :permitted_params

def permitted_params
  @permitted_params ||= PermittedParams.new(params, current_user)       
end

我的模型 Permitted_Param.rb

class PermittedParams < Struct.new(:params, :current_user)
   %w{folder group share_link user user_file}.each do |model_name|
     define_method model_name do
       params.require(model_name.to_sym).permit(*send("#{model_name}_attributes"))
     end   
   end

   def folder_attributes
     [:name]   
   end

   def group_attributes
     [:name]   
   end

   def share_link_attributes
     [:emails, :link_expires_at, :message]   
   end

   def user_attributes
     if current_user && current_user.member_of_admins?
       [:name, :email, :password, :password_confirmation, { :group_ids => [] }]
     else
       [:name, :email, :password, :password_confirmation]
     end   
   end

   def user_file_attributes
     [:attachment, :attachment_file_name]   
   end 
end

日志

在 2015-04-16 19:37:02 +0530 开始为 127.0.0.1 获取“/”
ActiveRecord::SchemaMigration 负载 (0.6ms) 选择 "schema_migrations".* FROM "schema_migrations" 处理者 FoldersController#index 作为 HTML 用户负载 (0.5ms) SELECT "users".* FROM "users" WHERE "users"."is_admin" = ?限制 1 [["is_admin", "t"]] 重定向到http://localhost:3000/admins/new 过滤器链停止为 :require_admin_in_system 渲染或重定向完成 302 发现于 207 毫秒(ActiveRecord:1.0 毫秒)开始获取 127.0.0.1 的“/admins/new” 2015-04-16 19:37:03 +0530 由 AdminsController#new 作为 HTML 处理
用户负载 (0.2ms) SELECT "users".* FROM "users" WHERE “用户”。“is_admin”=? LIMIT 1 [["is_admin", "t"]] 已渲染 布局/应用程序中的 admins/new.html.erb (331.3ms) 用户负载 (0.4ms) SELECT "users".* FROM "users" WHERE "users"."id" IS NULL LIMIT 1 渲染 shared/_header.html.erb (21.3ms) CACHE (0.1ms) SELECT "users".* FROM "users" WHERE "users"."id" IS NULL LIMIT 1
渲染 shared/_menu.html.erb (8.4ms) 渲染 shared/_footer.html.erb (0.8ms) 在 1789ms 内完成 200 OK (Views: 1707.5ms |活动记录: 1.7毫秒) 在 2015-04-16 19:37:19 +0530 开始 POST "/admins" for 127.0.0.1 +0530 由 AdminsController#create 作为 HTML 参数处理: {"utf8"=>"✓", "authenticity_token"=>"5VPDMdM6Cny63T00tcgU55ukkDD9XChTQwWjAJ7IUZ0ELh6D5c7UhbpbOKdQ3atdaNIaBVk5AxctcC0j09pcvQ==", "user"=>{"name"=>"ChiragArya", "email"=>"edwardmaya008@gmail.com", “密码”=>“[过滤]”,“密码确认”=>“[过滤]”}, "commit"=>"创建管理员帐户"} 用户负载 (0.4ms) SELECT "users".* FROM "users" WHERE "users"."is_admin" = ?限制 1 [["is_admin", "t"]] 在 26 毫秒内完成 500 内部服务器错误 (活动记录:0.4ms) NameError(未初始化的常量 ApplicationController::PermittedParams):
应用程序/控制器/application_controller.rb:26:in permitted_params'
app/controllers/admins_controller.rb:10:in
渲染/home/chirag/.rvm/gems/ruby-2.2.2/gems/actionpack-4.2.1/lib/action_dispatch/middleware/templates/rescues/_source.erb (54.9ms) 渲染 /home/chirag/.rvm/gems/ruby-2.2.2/gems/actionpack-4.2.1/lib/action_dispatch/middleware/templates/rescues/_trace.html.erb (35.3ms) 渲染 /home/chirag/.rvm/gems/ruby-2.2.2/gems/actionpack-4.2.1/lib/action_dispatch/middleware/templates/rescues/_request_and_response.html.erb (10.4ms) 渲染 /home/chirag/.rvm/gems/ruby-2.2.2/gems/actionpack-4.2.1/lib/action_dispatch/middleware/templates/rescues/diagnostics.html.erb 在救援/布局内 (227.5ms)

【问题讨论】:

  • 您的文件放在哪里?分享完整路线。您的 Permitted_Param.rb 也应该称为 Permitted_Params.rb
  • @RafadeCastro,既然是Ruby,就应该叫permitted_params.rb(小写)
  • @RafadeCastro 我改为在控制器方法中更改为 PermittedParam 并且运行良好,但现在以管理员身份注册后,我在登录时遇到另一个错误。我已经克隆了这个应用程序 github.com/mischa78/boxroomNoMethodError在 Folders#show
  • 好的,我也解决了这个问题该死的这段代码充满了错误:(在我创建新文件夹时访问管理员登录后出现错误:/

标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-4


【解决方案1】:

我遇到了同样的问题,我在将我的强参数函数名称重命名为controllername_params 后解决了这个问题

我不知道在哪里提到,但我很想知道。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-13
    • 2013-05-27
    • 1970-01-01
    • 1970-01-01
    • 2011-11-24
    • 1970-01-01
    相关资源
    最近更新 更多