0

多分私はこれをあまりにも長く見つめていましたが、私が構築した基本的なサインアップとログインフォームがあり、新しいページにリダイレクトするのではなく、div の同じページにそれらをレンダリングしたいだけです。

これが私のコントローラーです

class UsersController < ApplicationController
  def new
    @user = User.new
  end

  def create
    @user = User.new(params[:user])
    if @user.save
      session[:user_id] = @user.id
      redirect_to root_url, notice: "Thanks for signing up!"
    else
      render "new"
    end
  end

end

セッション用の同様のもの

class SessionsController < ApplicationController
  def new
  end

  def create
    user = User.find_by_email(params[:email])
    if user && user.authenticate(params[:password])
      session[:user_id] = user.id
      redirect_to root_url, notice: "Logged in!"
    else
      flash.now.alert = "Email or password is invalid."
    end
  end

  def destroy
    session[:user_id] = nil
    redirect_to root_url, notice: "Logged out!"
  end

end

これがワンページアプリのビューの関連部分です

<div id="user">
  <% if current_user %>
    Logged in as <%= current_user.email %>.
    <%= link_to "Log Out", logout_path, remote: true, disable_with: "Goodbye!", :class => "logout_a" %>
  <% else %>
    <%= link_to "Sign Up", signup_path, remote: true, disable_with: "Welcome!", :class => "signup_a" %> or
    <%= link_to "Log In", login_path, remote: true, disable_with: "Welcome Back!", :class => "login_a" %>
  <% end %>
</div>

<div class="render_here">
</div>

クラス「render_here」は、フォームをレンダリングしたい場所です。

ビューで .js.erb ファイルを使用して link_to 仕様内でパーシャルをレンダリングしようとしましたが、問題をグーグルで調べて得た他のいくつかのアイデアを使用しましたが、物事を複雑にしすぎており、AJAX 化の簡単な解決策が欠けていると思いますサインアップとログインのプロセス。

ありがとう!

4

2 に答える 2

0

静的ページの場合、使用できます

 <%=  render :partial => "login_form"%>

RoRガイドは、それに関する良い情報を提供します。login_form は「_login_form.erb」として保存する必要があります

動的ページの場合、リンクがクリックされたときに ajax リクエストを送信し、そのリクエストから html フォームをレンダリングして、応答データから div を埋めることができます。

于 2013-05-09T08:18:23.090 に答える
0

あなたが使用することができますrespond_with

class UsersController < ApplicationController
  respond_to :html, :json
  def new
    @user = User.new
    respond_with @user
  end

  def create
    @user = User.new(params[:user])
    if @user.save
      session[:user_id] = @user.id
      flash[:notice] = "Thanks for signing up!"
    end
    respond_with @user
  end

end

respond_withリクエストがhtmlで来る場合、フォーマットについてはスマートです。html 応答で応答します。リクエストが来た場合、jsonつまり ajax 経由で。respond_withjson 応答を送信します

于 2013-05-09T05:57:15.323 に答える