Tag: 设计

如何在登录表单中设置Devise和Rails

我想在我网站的标题中添加一个登录表单。 我使用Rails 3.2.8和最新的Devise。 在app/views/devise/sessions/new.html.erb文件中,创建了一个登录表单: resource_name, :url => session_path(resource_name), :html => {:class => ‘main’}) do |f| %> ‘Enter username’ %> ‘Enter password’ %> 如果我尝试复制该代码并将其放在我的application.html.erb ,我会收到有关上面引用的资源变量的错误: undefined local variable or method `resource’ for #<#:0x3c73b00> 那么我可以使用/users/sign_in作为动作使用普通的railsforms吗? 如何在登录后告诉设计重定向到哪里?

在rails控制器中访问devise current_user变量

我使用模型User运行Devise gem(3.1.0)的Rails(4.0)。 我有名为CollectionsController控制器,我希望在此控制器中使用Devise的访问器方法current_user获取当前登录的用户对象。 之后,它返回undefined local variable or method ‘current_user’ for CollectionsController:Class 。 最有趣的是,当我试图在另一个控制器中做同样的事情时,例如PagesController – 一切都很完美! UPD:分享我控制器的“代码”:) class CollectionsController < ActionController::Base def index @user = current_user end end current_user方法的来源是由Devise定义的,而不是我。 所以我认为这不是问题所在。

如何处理devise的authenticate_user! 用ajax电话?

我有一个表单:remote => true,这意味着它将通过ajax提交。 在控制器中,我有这样的代码: before_filter: authenticate_user!, :only => [:create] 因为我只允许确认的用户创建资源。 但是,当身份validation失败时,设计会引发一个 Completed 401 Unauthorized 并且不会呈现不显眼的javascript。 但我希望事情是这样的: 设计在flash中设置一些消息,并渲染我的.js.erb,然后我向用户显示flash。 怎么实现呢?

如何在Rails中加入多角色,多组织表

我正试图找到一个对我来说并不那么明显的导轨设计的解决方案。 一个对这些东西非常好的朋友给了我他的看法,但是我想知道是否有轨道模式 – 我缺少的知识是rails如何创建关系… 我有这样的问题空间。 用户可以在多个组织中执行多个角色。 因此,例如,用户既可以是组织1的“标准用户”,也可以是“高级用户”,但可以是组织2的“管理员”。 我正在使用Devise和CanCan。 我有一个Users表,Roles和一个Organizations表以及一个roles_users表来管理这种多对多关系。 然后我有一个user_organisations表,它存储用户和组织之间的M2M。 一切正常。 当我这样做; user = User.new({ :email => ‘admin@example.com’, :password => ‘password’, :password_confirmation => ‘password’, :firstname => ‘TestFirstName’, :surname => ‘TestSurName’}) org1 = Org.new({:fullname => ‘Test Org 1’}) org1.save org2 = Org.new({:fullname => ‘Test Org 2’}) org2.save user.org << Org.first user.org << Org.last user.roles <‘administrator’).first user.roles […]

使用Active Admin过滤前跳过

我正在使用设计和最近添加的活动管理员,它创建了一个单独的admin_users表来保持管理员。 当我尝试登录并浏览时,一切正常。 但是,我的应用程序控制器对一般用户有此: before_filter :authenticate_user!, :except => [:show, :index] 因此,当在活动管理界面内时,每当我尝试编辑或删除任何内容时,它都会要求我登录。我了解到可以在需要排除before_filter的控制器内部使用skip_before_filter,但是Active Admin控制器文件夹中没有控制器文件,或者我可以看到项目中的任何位置。 任何人都可以建议如何使活动管理员忽略应用程序beofre_filter我想应用于所有面向客户端/用户?

Devise,OmniAuth和Facebook:“没找到。 身份validationpassthru。“

试着跟随https://github.com/plataformatec/devise/wiki/OmniAuth:-Overview ,我很难过。 我的config / initializers / devise.rb, devise_for :users, :controllers => { :omniauth_callbacks => “users/omniauth_callbacks” }在我的routes.rb中,并定义了一个OmniAuthCallbacks控制器。 当我访问user_omniauth_authorize_path(:facebook) ,我得到: Not found. Authentication passthru. Not found. Authentication passthru. 我不知道下一步该做什么。 我没有使用路由全球,所以我不认为我需要定义一个passthru方法,但这样做只给了我404。

rails 3路由堆栈级别设计太深

我收到有关我的路线文件的错误 SystemStackError (stack level too deep): actionpack (3.2.8) lib/action_dispatch/middleware/reloader.rb:70 Rendered /Users/duy/.rvm/gems/ruby-1.9.3-p194/gems/actionpack-3.2.8/lib/action_dispatch/middleware/templates/rescues/_trace.erb (1.5ms) Rendered /Users/duy/.rvm/gems/ruby-1.9.3-p194/gems/actionpack-3.2.8/lib/action_dispatch/middleware/templates/rescues/_request_and_response.erb (1.3ms) Rendered /Users/duy/.rvm/gems/ruby-1.9.3-p194/gems/actionpack-3.2.8/lib/action_dispatch/middleware/templates/rescues/diagnostics.erb within rescues/layout (19.9ms) 我可以隔离有问题的代码,但不明白是什么创建了无限循环: devise_for :users, :controllers => { :registrations => “registrations”, :sessions => “sessions”, :omniauth_callbacks => “users/omniauth_callbacks” } devise_scope :user do match ‘/sessions/simulate_user/:id’ => ‘sessions#simulate_user’, :as => :simulate_user_sessions match ‘/sessions/leave_simulation_mode’ => ‘sessions#leave_simulation_mode’, :as => :leave_simulation_mode_sessions get “user_confirmation”, […]

如何使用rails devise gem成功注册时重定向到特定页面?

如何使用rails devise gem成功注册时重定向到特定页面?

如何使用设计validation来validation注册电子邮件地址是否来自某个域?

我想确保只有某个域的电子邮件地址的人可以注册使用Devise的网站。 例如,如果人们使用电子邮件joe@mysite.com注册,他们应该收到确认电子邮件,但如果使用joe@yoursite.com注册,他们应该收到错误消息。

新添加的列数据未保存到DB

我在我的Rails 4应用程序中使用Devise进行用户身份validation。 最近我在User模型中添加了两个新列。 它们是first_name和last_name. 然后,我使用这两个属性的字段更新了登录表单。 但是,在测试创建新用户时,两者都没有保存到数据库中。 我认为这可能是一个质量分配问题,但我没有得到任何类型的数据库错误。 用户已成功创建,但仅存储原始属性(email,password和password_confirmation)。 有人可以帮忙吗? 这是我的表单的代码: resource_name, :url => registration_path(resource_name)) do |f| %> 从控制台显示我的模型信息,显示已添加属性: User(id: integer, email: string, encrypted_password: string, reset_password_token: string, reset_password_sent_at: datetime, remember_created_at: datetime, sign_in_count: integer, current_sign_in_at: datetime, last_sign_in_at: datetime, current_sign_in_ip: string, last_sign_in_ip: string, created_at: datetime, updated_at: datetime, first_name: string, last_name: string)