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 回答