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

时间:2013-03-20 20:33:14

标签: ruby-on-rails ruby ruby-on-rails-3 devise sass

命令rails generate devise:views\app\views\users

下成功创建了文件夹

我希望自定义设计表单,但不确定要放在application.css中的css还是我需要单独创建user.css.scss。用Google搜索并检查git doc,但没有人在设计中指定CSS处理。

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

3 个答案:

答案 0 :(得分:11)

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

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

以上内容适用于任何控制器,只需在控制器命名的布局中添加文件即可。 views/layouts/reservations.html.erb

ReservationsController

您还可以通过创建目录Devise::RegistrationsController并添加views/layouts/devise

来为views/layouts/devise/registrations.html.erb添加特定布局

答案 1 :(得分:4)

如果您正在执行特定于控制器的样式表,也就是说,如果您关闭所有样式表的自动编译为application.css,则应在设计控制器之后命名样式表,例如:

registrations.css.scss

并将其添加到Rails.application.config.assets.precompile中的assets.rb列表。

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

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

Rails高达4.1

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

Rails 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

答案 2 :(得分:2)

要生成设备视图,请运行此行

rails generate devise:views

并使用页面样式执行任何操作。

阅读更多内容点击here