3

为什么渲染页面时不显示“well”类?

<div class="container">
  <div class="row">
    <div class="offset4 span4">
      <h2>Sign up</h2>

      <%= form_for(resource, :html => { :class => "well" }, :as => resource_name, :url => registration_path(resource_name)) do |f| %>
        <%= devise_error_messages! %>

        <div><%= f.label :email %><br />
        <%= f.email_field :email %></div>

        <div><%= f.label :password %><br />
        <%= f.password_field :password %></div>

        <div><%= f.label :password_confirmation %><br />
        <%= f.password_field :password_confirmation %></div>

        <div><%= f.submit "Sign up" %></div>
      <% end %>

      <%= render "devise/shared/links" %>
    </div>
  </div>
</div>

呈现时表单如下所示:

    <form method="post" id="new_user" class="new_user" action="/users" accept-charset="UTF-8"><div style="margin:0;padding:0;display:inline"><input type="hidden" value="✓" name="utf8"><input type="hidden" value="P3KHtU5CRNy0/kVEvck4coilSOWCHYaKPZ5D1xCxQj4=" name="authenticity_token"></div>


        <div><label for="user_email">Email</label><br>
        <input type="email" value="" size="30" name="user[email]" id="user_email"></div>

        <div><label for="user_password">Password</label><br>
        <input type="password" size="30" name="user[password]" id="user_password"></div>

        <div><label for="user_password_confirmation">Password confirmation</label><br>
        <input type="password" size="30" name="user[password_confirmation]" id="user_password_confirmation"></div>

        <div><input type="submit" value="Sign up" name="commit"></div>
</form>

通知类只是“new_user”。没有“好”,为什么以及如何解决它?

谢谢

更新:

我已将其更新为:

  <%= form_for(resource, :class => "well", :as => resource_name, :url => registration_path(resource_name)) do |f| %>

呈现的 HTML:

<form method="post" id="new_user" class="new_user" action="/users" accept-charset="UTF-8"><div style="margin:0;padding:0;display:inline"><input type="hidden" value="✓" name="utf8"><input type="hidden" value="P3KHtU5CRNy0/kVEvck4coilSOWCHYaKPZ5D1xCxQj4=" name="authenticity_token"></div>

还是行不通。使用 Rails 3.2.8 在应用程序的其余部分使用 HAML,即使这些文件是 ERB。会是这样吗?

4

5 回答 5

16

实际上,您的 form_for 不附加该类的原因是因为使用 form_for,您需要在 :html 哈希中声明它:

form_for(resource, :html => {:class => "well"}, :as => resource_name, :url => registration_path(resource_name)) do

api.rubyonrails.org form_for,阅读描述三个哈希选项(:url、:namespace 和 :html)的段落

于 2013-01-02T16:11:40.370 回答
4

对于其他遇到此问题的人,Speed 的解决方案对我有用。

我决定分享我的工作解决方案的代码。让我的应用看起来像http://twitter.github.com/bootstrap/examples/signin.html

我修改了我的 /views/devise/sessions/new.html.erb 看起来像:

<%= form_for(resource, :as => resource_name, :html => {class:"form-signin"}, :url => session_path(resource_name)) do |f| %>
<h2 class:"form-signin-heading">Please sign in</h2>
<%= f.email_field :email, :autofocus => true, class:"input-block-level", placeholder:"Email address" %>
<%= f.password_field :password, class:"input-block-level", placeholder:"Password"%>

<% if devise_mapping.rememberable? -%> 
    <label class="checkbox">
        <%= f.check_box :remember_me %> Remember Me
    </label>
<% end -%>

<%= f.submit "Sign in", class:"btn btn-large btn-primary" %>

<hr>

<%= render "devise/shared/links" %><% end %>

不要忘记将引导示例头部的 css 添加到 /assets/css 请注意,使用 [type="email"] 代替引导示例中的 [type="text"]。

.form-signin {
    max-width: 300px;
    padding: 19px 29px 29px;
    margin: 40px auto 20px;
    background-color: #fff;
    border: 1px solid #e5e5e5;
    -webkit-border-radius: 5px;
       -moz-border-radius: 5px;
            border-radius: 5px;
    -webkit-box-shadow: 0 1px 2px rgba(0,0,0,.05);
       -moz-box-shadow: 0 1px 2px rgba(0,0,0,.05);
            box-shadow: 0 1px 2px rgba(0,0,0,.05);
}

.form-signin .form-signin-heading,
.form-signin .checkbox {
    margin-bottom: 10px;
}

.form-signin input[type="email"],
.form-signin input[type="password"] {
    font-size: 16px;
    height: auto;
    margin-bottom: 15px;
    padding: 7px 9px;
}

快乐编码!

于 2013-02-23T17:35:45.347 回答
1

根本问题是无法修改视图。它不仅限于我在 form_for 中正确声明的类。正确答案: 在 Rails 中自定义设计视图 这是投票数较高的答案。

我无法修改视图,因为我跑了

rails generate devise:views User

应该是

rails generate devise:views

注意没有提到用户。

于 2012-10-03T17:50:51.123 回答
0
<%= form_for(resource, :class => "well", :as => resource_name, :url => registration_path(resource_name)) do |f| %>
于 2012-10-02T18:09:52.943 回答
0

应用自定义样式的方法(使用 Devise 3.5.3 并且当您拥有多个 Devise 模型时)是在config/initializers/devise.rb.

它默认为假。将其更改为:

config.scoped_views = true

于 2016-02-16T05:40:55.337 回答