我正在try 使用一种不同的/定制的布局,名为"设计",用于正在使用的标志.我在Desive wiki上找到了this页,第二个例子甚至说每个动作都可以做(在本例中是sign_in个动作),但它没有给出这样做的例子.IRC的人告诉我我可以试试这个:

class ApplicationController < ActionController::Base
  protect_from_forgery

  layout :layout_by_resource

  def layout_by_resource
    if devise_controller? && resource_name == :user && action_name == 'sign_in'
      "devise"
    else
      "application"
    end
  end
end

但它似乎不起作用,因为它仍在加载默认的应用程序布局.我将非常感谢您的帮助.

推荐答案

我想出来了,但我会把这个问题留在这里,以防其他人好奇.

这是个愚蠢的错误.事实是sign_in是路径,not是行动.查看relevant source,我可以看到所需的操作是new,即创建一个new Desive会话.将上述代码的条件更改为:

if devise_controller? && resource_name == :user && action_name == 'new'

很好用.

希望这能帮助别人.

Ruby-on-rails相关问答推荐

无法安装Ruby错误运行';__rvm_make-J4';,

在控制器操作中适当使用ActiveModel Dirty

Rails 7 共享刺激控制器功能

Rails 控制台 - 更新 Gem 后的弃用通知

Gem::Ext::BuildError:ERROR:无法在macOS Monterey上构建Gem本机扩展

循环大量记录时 Ruby on Rails 内存泄漏; find_each 没有帮助

您将如何在 Ruby on Rails 应用程序中使用 rSpec 测试观察者?

你能从 Heroku dynos/workers 中获得多少性能?

理解 Gemfile.lock:删除 Gemfile.lock 然后再次运行 bundle install 可以吗?

Postgres on Rails 致命:数据库不存在

Rails:删除级联与依赖销毁

如何在 rspec 测试中输出变量?

如何在 Rails 中验证日期以使其在今天之后?

如何在Ruby 中对数字进行上限和舍入

在本地 Rails 开发环境中获取真实 IP 地址

设计自定义路由和登录页面

Rails Activeadmin - 自定义关联 Select 框

如何检测我的代码是否在 Rails 3 的控制台中运行?

Rails:每个环境的初始化程序?

在 Rails 3 中设置会话超时