2012-05-14 6 views
1

これをform_tagに変換するにはどうすればよいですか?このコードは、マイケル・ハートル第8章演習1form_forからform_tagに変換するときに問題が発生する

<% 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> 

でRoRのチュートリアルから基本的に私はこの

<% 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> 

しかし、そのまったくのフォームが表示されないようなものを試してみました。あなたは、等号を追加する必要があり

おかげ

答えて

2

:あなたはform_tagに切り替えたい理由

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

はしかし、私は疑問に思います。 form_forには、私の意見では多くの利点があります。フォームビルダー。

+0

OKああ。それは素晴らしいです。それは単なる運動だったからです。意見をいただきありがとうございます、私はform_forに固執します:) – user1372829

+0

よろしくお願いします。 form_tagメソッドの先頭に等号を追加すると、少なくとも何かを表示する必要があることを追加したいだけです。これはRails 3で行われた変更でした.Rails 2ではこれも等号なしで動作するはずです。あなたが完全に質問に答えた場合、この回答に合格とマークしてください。ありがとうございました! :) – flooooo

+0

ありがとう!ただした。 – user1372829

0

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

正しい構文

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

不正な構文

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

あなたはにオープニングembedタグ、変更メソッドに '=' を追加する必要があります:メソッド、および: 'ポスト' への投稿を

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

さらに変更する必要があるのは、sessions_controller.rbです。渡されたハッシュは、form_forメソッドからのハッシュを受け入れるように設定されているので、コントローラによって認識されません。最初の[:session]ハッシュを2行で削除する必要があります。あなたの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 
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> 

関連する問題