1

これをform_tagに変換するにはどうすればよいですか?このコードは基本的に、MichaelHartlによるRoRチュートリアル第8章演習1からのものです。

<% provide(:title, "Sign in") %>
<h1>Sign in</h1>

<div class="row">
  <div class="span6 offset3">
    <%= form_for(:session, url: sessions_path) do |f| %>

      <%= f.label :email %>
      <%= f.text_field :email %>

      <%= f.label :password %>
      <%= f.password_field :password %>

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

    <p>New user? <%= link_to "Sign up now!", signup_path %></p>
  </div>
</div>

私はこのようなことを試みました

<% provide(:title, "Sign in") %>
<h1>Sign in</h1>

<div class="row">
  <div class="span6 offset3">
    <% form_tag sessions_path, methods=> :post do %>
        <%= label_tag 'email' %><br />
        <%= text_field_tag :email, params[:email], :placeholder => "Email" %>

        <%= label_tag 'password' %><br />
        <%= password_field_tag :password %>

        <%= submit_tag 'Sign in' %>
    <% end -%>
    <p>New user? <%= link_to "Sign up now!", signup_path %></p>
  </div>
</div>

ただし、フォームはまったく表示されません。

ありがとう

4

3 に答える 3

2

等号を追加する必要があります。

<%= form_tag sessions_path, methods=> :post do %>

しかし、なぜに切り替えたいのだろうかform_tagform_for私の意見では、フォームビルダーなど多くの利点があります。

于 2012-05-14T11:02:44.273 に答える
0

また、form_tagに変換しようとしています。

正しい構文

<%= form_tag sessions_path, :method => 'post' do %>

構文が正しくありません

<% form_tag sessions_path, methods=> :post do %>

開始埋め込みタグに「=」を追加し、メソッドを:methodに変更し、:postを「post」に変更する必要があります。

form_forとform_tagを使用する理由は、別のスタックオーバーフロースレッドで説明されています。

行う必要のあるもう1つの変更は、sessions_controller.rbにあります。返されたハッシュは、form_forメソッドからのハッシュを受け入れるように設定されているため、コントローラーによって認識されません。2行の最初の[:session]ハッシュを削除する必要があります。あなたのsessions_controller.rbは次のようになります。

def create
    user = User.find_by(email: params[:email].downcase)
    if user && user.authenticate(params[:password])
        sign_in user
        redirect_to user
    else
        flash.now[:error] = 'Invalid email/password combination' 
        render 'new'
    end
end
于 2013-06-26T19:13:01.560 に答える
0

次は、チュートリアル(Michael Hartl 3.2)の第8章のコードです。演習1

<% provide(:title, "Sign in") %>
<h1>Sign in</h1>

<div class="row">
    <div class="span6 offset3">

        <%= form_tag sessions_path, :method => 'post' do %>
          <%= label_tag 'email', 'Email' %>
          <%= text_field_tag :email, params[:email], :placeholder => "Email" %>
          <%= label_tag 'password', 'Password' %>
         <%= password_field_tag :password %>
      <br>
      <%= submit_tag "Sign In" , :class=> "btn btn-large btn-primary" %>
    <% end %>
    <p>New user? <%= link_to "Sign up now!", signup_path %></p>
</div>

于 2014-03-17T19:26:40.190 に答える