如何在rails中自定义设计形式css

swa*_*esh 7 ruby ruby-on-rails sass devise ruby-on-rails-3

命令下rails generate devise:views成功创建了文件夹\app\views\users

我希望自定义设计表单,但不确定是否要放置的CSS application.css或我需要单独创建user.css.scss.谷歌搜索了一下并检查了git doc,但是没有人在设计中指定CSS处理.

让我知道处理它的正确方法

mra*_*ruz 12

Devise将使用您的默认布局.因此,您在自己中使用的CSS views/layouts/application.html.erb将用于生成的设计视图中.

如果您需要特定于布局的布局,则可以创建一个views/layouts/devise.html.erb文件,您可以在其中设计特定的CSS.由于Rails命名约定,它会自动拾取它.

以上将适用于任何控制器,只需在控制器命名的布局中添加文件,例如.views/layouts/reservations.html.erb对于ReservationsController

您还可以Devise::RegistrationsController通过创建目录views/layouts/devise和添加来添加特定布局views/layouts/devise/registrations.html.erb


Nic*_*lov 5

如果您正在执行特定于控制器的样式表,也就是说,如果您关闭了将所有样式表自动编译到application.css.

registrations.css.scss
Run Code Online (Sandbox Code Playgroud)

并把它添加到Rails.application.config.assets.precompile列表中assets.rb

样式表的放置是标准的,app/assets/stylesheets/因此请注意设计控制器和您的控制器之间的名称冲突。

要在布局中选择特定于控制器的样式表,您需要这样的东西:

导轨高达 4.1

<%= stylesheet_link_tag controller_name, media: 'all' if Rails.application.assets.find_asset("#{controller_name}.css") %>
Run Code Online (Sandbox Code Playgroud)

导轨 4.2+

<%= stylesheet_link_tag controller_name, media: 'all' if asset_present?("#{controller_name}.css") %>

# ...meanwhile, somewhere in the helpers...

def asset_present?(name)
  # Rails 4.1 had Rails.application.assets filled out in all environments.
  # Rails 4.2 has it filled only when config.assets.compile == true which is only
  # in development by default.
  if Rails.application.assets.present?
    Rails.application.assets.find_asset(name)
  else
    Rails.application.assets_manifest.files.values.map { |v| v['logical_path'] }.include?(name)
  end
end
Run Code Online (Sandbox Code Playgroud)