sign_in / sign_outプロシージャにdevise gemを使用しています。
私はdeviseからviewsファイルを生成しました rails g devise views
sign_inのフォームを含むdevise / sessions / new.html.erbファイルがあったことを確認しました。
別のファイルdevise / sessions / _form.html.erbを作成<%= render 'form' %>
し、new.html.erbファイル内で作成しましたが、それは非常にうまくいきました。
今、私は別のコントローラからこのフォームを含めたかったです。したがって、「メイン」と呼ばれるコントローラー(具体的には、ビューページ内)に「mains / index.html.erb」という<%= render 'devise/sessions/form' %>
ファイルを含めました。インクルードは問題なく機能しているようですが、次のエラーが発生します。
NameError in Mains#index
Showing /home/administrator/Ruby/site_v4_ruby/app/views/devise/sessions/_form.html.erb where line #1 raised:
undefined local variable or method `resource' for #<#<Class:0x007f1aa042d530>:0x007f1aa042b870>
Extracted source (around line #1):
1: <%= form_for(resource, :as => resource_name, :url => session_path(resource_name)) do |f| %>
2: <p><%= f.label :email %><br />
3: <%= f.text_field :email %></p>
4:
form_for(resource、...)部分が問題を引き起こしているようです(元のdevise sign_inページにいる場合は問題なく動作します...この問題をRailsで解決するにはどうすればよいですか?
個人的には、HTMLコードをインラインで記述するよりも、render関数を使用してフォームを含めることを好みます。
「メイン」コントローラー内で何か(リソース)を指定する必要がありますか?
よろしくお願いします。ありがとうございました。