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これらのファイルがERBであっても、アプリの残りの部分でHAMLを使用する。それでいいの?

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、3つのハッシュオプション(: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 %>

ブートストラップの例のヘッドから/assets/cssにcssを追加することを忘れないでください。ブートストラップの例のように[type="text"]の代わりに[type="email"]が使用されることに注意してください。

.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でのDeviseビューのカスタマイズ これは、投票数が多い答えです。

実行したため、ビューを変更できませんでした

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です。

デフォルトはfalseです。次のように変更します。

config.scoped_views = true

于 2016-02-16T05:40:55.337 に答える