Tag: 设计

仅在sign_in上显示自定义消息

我试图找出当用户在我的应用程序中登录时如何在我的视图中显示自定义“欢迎回来”消息。 我目前正在使用Devise处理所有这些,我似乎无法弄明白。 任何帮助将非常感激。

Rails:调用Devise authenticate_user! 并处理无效的用户/密码exception

我有一个弹出窗口,只有在用户通过身份validation后才能查看/保存一些信息。 我正在使用设计。 在控制器before_filter中,它检查用户是否已登录,如果没有,则显示登录页面。 此登录页面是网站登录页面的翻录版本,因此它非常适合弹出窗口。 在身份validation操作上,我调用authenticate_user!。 当用户输入有效凭据时,一切正常。 但是当凭证无效时,设计会自动重定向到网站的登录页面(正如我所说的不同,不适合弹出窗口) 我尝试在电话中附加救援,但无济于事。 有人可以建议一个更好/正确的方法吗? 🙂 def authenticate authenticate_user! rescue redirect_to “/popup/sign_in” if user_signed_in? respond_to do |format| format.html { flash[:notice] = I18n.t(“logged_in_succesfully”) redirect_back_or_default(accounts_path) } else flash[:error] = I18n.t(“devise.failure.invalid”) render “/popup/sign_in” end end

什么是正确的配置线来获得设计,omniauth和谷歌工作?

我仔细查看了文档,但我无法弄清楚我想要使用的特定行,以便让devise + omniauth + google很好地协同工作。 这个策略文件表明有一个简单的方法,但我找不到一个例子。 https://github.com/intridea/omniauth/blob/master/oa-oauth/lib/omniauth/strategies/google.rb 目前我在devise.rb初始化文件中使用下面的行。 config.omniauth :google, GOOGLE_APP_ID, GOOGLE_SECRET_KEY 但我很确定它不完整。 此外,我很难找到我应该注册谷歌应用程序ID和密钥的位置。 提前致谢。 格雷姆

form_for in devise它是如何工作的?

rails g devise:views命令生成该视图 Sign up resource_name, :url => registration_path(resource_name)) do |f| %> true %> true %> 我的问题是它是如何工作的“form_for(resource,:as => resource_name,…”

我应该如何在ApplicationController中使用Draper?

我的问题涉及以下开发堆栈: Rails 3.2.1 德雷珀0.14 祖先1.2.5 我想要做的是,将导航提供给我的布局。 所以我在ApplicationController定义了一个beforefilter。 class ApplicationController < ActionController::Base [..] before_filter :current_navigation [..] def current_navigation @n = PublicationDecorator.find(1) end end 正如您在上面的代码清单中看到的那样,我正在使用draper 。 我的PublicationDecorator在ApplicationController不可用。 那么如何让我的所有Publications装饰好? uninitialized constant ApplicationController::PublicationDecorator 我正在使用ancestry gem来实现层次结构。 还有一个问题是,如果我使用的是ancestry ,那么所有物品都会被装饰吗?

如何覆盖“已经发送电子邮件”?

我想用更具指导性的内容替换此错误消息,以帮助用户了解下一步该做什么。 不幸的是,我似乎无法在我的源头找到这个; 它来自何处以及如何修改它?

devise user_root_path在生产中获得404’d但不是dev?

很奇怪,我知道但在生产中使用user_root_path不起作用。 当我点击链接myapp.com/user我得到一个404页面。 日志文件不显示吐出但尝试失败: Started GET “/user” for 123.125.146.23 at 2011-01-19 19:40:45 +0000 ActionController::RoutingError (uninitialized constant User::UsersController): 现在,查看有关此单位化常量的唯一方法是打开rails c并将常量输入控制台。 这是发生的事情: ruby-1.9.2-p136 :005 > User::UsersController (irb):5: warning: toplevel constant UsersController referenced by User::UsersController => UsersController 现在一些挖掘发现这个顶级警告可能会搞乱它。 但日志说bubkiss。 所以我改变了路线文件: devise_for :users namespace :user do root :to => “users#index” end resources :subdomains match ‘/user’ => ‘users#index’ 至: devise_for :users […]

使用设计动态设置用户时区

我已经构建了一个rails应用程序,可以帮助父母跟踪他们的婴儿的睡眠。 为了使它正常工作,我必须支持不同的时区。 为了避免使用时区烦扰用户,我创建了一个小的javascript,在登录表单中添加了一个隐藏字段,包括时区偏移量。 这是代码 var timeZoneField = $(“input[name=’user_tz_offset’]”); if (timeZoneField.length) { var browserDate = new Date(); var timeZoneOffsetSeconds = (browserDate.getTimezoneOffset() * 60) * -1; $(timeZoneField).val(timeZoneOffsetSeconds); } 使用该字段中的数据,我将Time.zone设置为与该偏移量对应的任何城市。 这样的事情会产生时区 user_time_zone = ActiveSupport::TimeZone.[](params[:user_tz_offset].to_i) session[:user_time_zone] = user_time_zone 最后,我在ApplicationController中设置了时区。 def set_user_time_zone if (session[:user_id]) Time.zone = session[:user_time_zone] else Time.zone = config.time_zone end end 所有这些都依赖于我自己编写的登录function。 但是,我知道我以后需要使用更好的用户管理系统,因为我自己的代码既没有做得好或者特别安全(我首先关注其他function)。 现在,我已经安装了设计,它可以很好地登录和注销,该网站的大多数其他function也可以工作。 但我不知道如何使用设计作为我的用户管理系统来处理时区支持。 一个想法是覆盖Devise中的SessionsController,添加对该隐藏时区字段的检查并将其值添加到user_session。 但我对这样做感到担心,感觉这是一个坏主意。 是否有更好的方法来添加此function,而无需强制用户在注册期间添加时区信息? […]

基于对象类的控制流/条件基础设计是不是很糟糕?

我目前正在开发一个Rails项目,并且已经找到了最容易做到的时间 if object.class == Foo … else if object.class == Bar … else … 我开始在视图中这样做,我需要以不同的方式显示不同的对象,但现在发现自己在其他地方使用它,例如在将对象作为参数的函数中。 我不确定为什么,但我觉得这不是好习惯。 如果这不是好习惯,为什么呢? 如果它完全没问题,那么人们何时可能想要特别使用它? 谢谢!

添加自定义参数以设计注册 – 未允许的参数

我一直在尝试自定义设计寄存器方法以注册更多参数并更新更多(到目前为止没有运气),但我总是得到Unpermitted parameters:错误。 我尝试使用Devise和https://github.com/plataformatec/devise#strong-parameters 添加额外的注册字段 ,但我无法克服这一点。 我还考虑过创建一个新表来保存外键的用户ID并放入像user_id, display_name, profile_picture这样的东西,但是当我尝试从同一页面提交所有东西时我会遇到同样的问题(搞乱了设计控制器)。 您对我如何解决这个问题有什么建议吗? 我还有什么要发布的? 的routes.rb devise_for :users, controllers: { registrations: ‘users/registrations’ } 用户/ REGC def create build_resource(registration_params) if resource.save if resource.active_for_authentication? set_flash_message :notice, :signed_up if is_navigational_format? sign_up(resource_name, resource) respond_with resource, :location => after_sign_up_path_for(resource) else set_flash_message :notice, :”signed_up_but_#{resource.inactive_message}” if is_navigational_format? respond_with resource, :location => after_sign_up_path_for(resource) end else clean_up_passwords respond_with resource […]