1

完全に機能するサインイン/アップフォームを備えたデバイスユーザーテーブルがあります。

私が疑問に思っていたのは、そのユーザー フォームを別のテーブルに表示する方法です。

例えば

users/sign_in は完全に機能しますが、そのフォームをmovies/indexに表示したい

フォームコードをmovies/indexに追加しようとしましたが、このエラーが発生しました

undefined local variable or method `resource' for #<#<Class:0x00000102cbf0b8>:0x00000103bb6d78>

サインインフォームはこちら

<%= form_for(resource, :as => resource_name, :url => session_path(resource_name)) do |f|     %>
  <div><%= f.label :email %>
  <%= f.email_field :email, :autofocus => true %></div>

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

  <% if devise_mapping.rememberable? -%>
    <div><%= f.check_box :remember_me %> <%= f.label :remember_me %></div>
  <% end -%>

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

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

ありがとう!

4

1 に答える 1

0

ビューを生成することができます (あなたはすでにそれを行っていることを理解しています)。コントローラーをオーバーライドするか、あなたの場合、Devise のコントローラーを監視し、必要なコードを取得して、ビューでパーシャルを呼び出すことができます (からデバイス ビュー)。

私は数ヶ月前にそのようなことをしましたが、私がしたこと (完全には提案していませんが、より良い方法を見つけていません) は、Devise ビューからコードを取得し、別のビューにコードをコピーすることでした。いくつかの変更:

<%= form_for(User.new, :as => "user", :url => session_path("user"), :remote => true) do |f| %>
  <div><%= f.label :email %><br />
  <%= f.email_field :email %></div>

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

    <div><%= f.check_box :remember_me %> <%= f.label :remember_me %></div>

  <div><%= f.submit "Sign in" , :class=>"blue_submit_degradiant", :id =>"sign_in_user"%></div>
<% end %>

動作しますが、正しい方法は User.new の代わりに @user を使用することです

于 2013-03-31T22:34:11.950 に答える