我花了很多时间尝试使用 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
这一切都奏效了,但它好吗?我想留在页面上,我点击注册。这个怎么做 ?