8

私のRubyアプリでは、認証に「devise」gemを使用していますが、ビューをカスタマイズし、それぞれをカスタマイズしてからdeviseビューを生成し、deviseフォルダーにパーシャルとして保存したいと考えています。別のビュー。

私の問題は機能していますが、new/sessionsサインアップしようとすると、フォームの投稿に問題があるようです. ログインフォームはこちら。

デバイスのドキュメントでレイアウトをカスタマイズする方法についてよく読んでいますが、デバイス ビュー フォルダーの外でフォーム レンダリングを機能させるための実装方法について少し混乱しています。

4

1 に答える 1

16

実際、あなたの質問はこの質問と同じですが、少し説明してやってみます。

  1. 登録デバイスをカスタマイズします。(カスタマイズ工夫)
  2. 登録フォームの横にカスタム ログイン フォームを作成します。(ウィキ)

ステップバイステップ:

  1. 登録をカスタマイズするためのコントローラを作成し、デフォルトの登録デバイスから継承します

    # customize registration controller
    class RegistrationsController < Devise::RegistrationsController
      layout 'login'
      skip_before_filter :require_no_authentication
      before_filter :resource_name
    
      def resource_name
        :user
      end
    
      def new  
        @user = User.new
      end
    
      def create
        @user = User.new(params[:user])
        # another stuff here
      end
    end
    
  2. セッションをカスタマイズするためのコントローラーを作成し、デフォルトのセッション デバイスから継承する

    # customize session controller
    class SessionsController < Devise::SessionsController
      def create
        super
      end
    end
    
  3. 登録ビューを作成する app/registrations/new.html.erb

    ログインと登録フォームを に入れます app/registrations/new.html.erb(登録フォームの横にあなたのプロジェクトのように見えます)

    <%= form_for(resource, :as => resource_name, :url => user_session_path(resource_name)) do |f| %>
    <%# another stuff here %>  
    <% end %>
    
    <%= form_for(resource, :as => resource_name, :url => user_registration_path(resource_name)) do |f| %>
    <%# another stuff here %>
    <% end %>
    
  4. アプリケーション ヘルパーでデバイス マッピング メソッドをオーバーライドする

    module ApplicationHelper
      def resource_name
        :user
      end
    
      def resource
        @resource ||= User.new
      end
    
      def devise_mapping
        @devise_mapping ||= Devise.mappings[:user]
      end
    end
    
  5. 登録デバイスとセッションをカスタマイズするためのルート

    devise_scope :user do
      # using login path for registration
      get '/login' => 'registrations#new', :as => :new_user_registration
      post '/signup' => 'registrations#create', :as => :user_registration
      post '/signin' => 'sessions#create', :as => :user_session
    end
    

この助けを願っています!

于 2013-06-08T17:09:04.010 に答える