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