0

Devise gem を使用してこれを作成しようと多くの時間を費やしましたが、別の方法で作成することにしました。つまり、独自のコントローラーを作成することです。

登録またはログインにエラーがある場合、モーダルは非表示になりませんでした。

私はjsをレンダリングする必要があると思うので、Ajaxを使用する必要がありますが、それはわかりません。

私の単純なコントローラー(編集する必要があります、そこにエラーがあります):

   def new
    @user = User.new
   end

   def create
     @user = User.new(params[:user])
  if @user.save
    redirect_to @user
   else
  render :js => "('#sign_up').modal('show');"//or something else I don't know
   end
  end

そして、application.html.erb のコード (new.js.erb のどこに配置すればよいでしょうか?):

  <%= link_to  "Sign_up", '#sign_up', { 'data-toggle' => 'modal', 'data-target' => "#sign_up"}%>

    <div id="sign_up" class="modal hide fade in" style="display: none;">
   <%= render :template => "users/new" %>
  </div>

エラーが表示されます:

    undefined method `model_name' for NilClass:Class

抽出されたソース (5 行目あたり):

      3: <div class="row">
      4:   <div class="span6 offset3">
      5:     <%= form_for(@user) do |f| %>
.....

編集:

@user をホームコントローラー(私の root_path )に入れると

 class StaticPagesController < ApplicationController 
    def home
      @user = User.new 
    end    
 end

それはすべてうまくいきましたが、それは良いですか?サインアップをクリックしたページに留まりたい。これを行う方法 ?

4

2 に答える 2

0

私はこれを試していませんが、これはあなたがやろうとしていることにとって非常に重要だと思います。

https://github.com/plataformatec/devise/wiki/How-To:-Display-a-custom-sign_in-form-anywhere-in-your-app

于 2012-06-13T11:39:08.377 に答える
0

モーダルでページをレンダリングしたのと同様の方法でモーダルを使用しましたが、検証で機能します

 <a data-toggle="modal" href="#myModal" class="myclass">Enquiry</a>
    <div class="modal hide fade" id="myModal">
        <div class="modal-header">
             <a class="close" data-dismiss="modal">×</a>
             <h3>Enquiry form</h3>
        </div>
        <%=render :template => "users/new"%> 
    </div>
于 2012-06-13T07:53:31.300 に答える