6

ホーム/ランディング ページでユーザーがサイトにサインアップできるようにしようとしています。デバイス登録フォームをランディング ページ ビューに複製しました。

<%= form_for(resource, :as => resource_name, :url => registration_path(resource_name)) do |f| %>
  <%= devise_error_messages! %>

  <div><%= f.label :first_name %><br />
  <%= f.text_field :first_name %></div>

  <div><%= f.label :last_name %><br />
  <%= f.text_field :last_name %></div>

  <div><%= f.label :profile_name %><br />
  <%= f.text_field :profile_name %></div>

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

また、リソースを適切に定義できるように、ヘルパー メソッドも追加しました。application_controller.rb

class ApplicationController < ActionController::Base
  protect_from_forgery
  def resource_name
    :user
  end

  def resource
    @resource ||= User.new
  end

  def devise_mapping
    @devise_mapping ||= Devise.mappings[:user]
  end
end

ただしundefined local variable or method resource'、 #<#:0x007fa816b4b750>`のエラーがまだ発生しています

ホームランディングページに登録フォームを適切にレンダリングするために、ここで欠けているものは何ですか?

4

1 に答える 1

15

ビューからアクセスするには、これらのコントローラー メソッドをヘルパー メソッドとして宣言する必要があります。

helper_method :resource, :resource_name, :devise_mapping

ApplicationControllerメソッドが定義された後、あなたの中にその行を追加するだけです。

あなたが提供したリンクは、実際にはこのコードをコントローラーではなくアプリケーションヘルパーhelper_methodに入れるように言及していることに気付くでしょう...そのようにすれば、この宣言を避けることができます。

于 2012-12-03T18:15:59.650 に答える