0

ログイン用に Ajax のような動作を実装する必要があります。

私はこのコントローラーを持っています:

def login
    if request.post?  
      @frontendu = Frontenduser.authenticate(params[:email], params[:login_password], params[:store_id])
      if @frontendu
        session[:frontend_user] = @frontendu.id
        @fuser=Frontenduser.find(session[:frontend_user])
        @fuser.update_attributes(:is_logged =>true)
        @fuser.save
        flash[:message]  = "Login successful."
        redirect_to :back
      else
        redirect_to :back
      end 
  end
  end

私はこのフォームを持っています:

<form accept-charset="UTF-8" action="/frontendusers/login" id="signin_form" method="post">
  <div class="field">
    <%= text_field_tag :email %>
  </div>
  <div class="field">
    <%= password_field_tag :login_password %>
    <%= hidden_field_tag :store_id, store_id %>
  </div>
  <div class="forget uppercalse">
    <a href="#">Forget Username?</a>
  </div>
  <div class="forget uppercalse">
    <a href="#">Forget Password?</a>
  </div>
  <div class="login-button">
    <input type="submit" value="Log In"></input>
  </div>
</form>

これは機能しますが、ログインフォームを保持し、ログインが失敗したことをどこかに表示したいと思います (適切な div を配置します)。失敗しない場合は、リダイレクトはそのままで問題ありません。

私はRailsの初心者ですが、これを行うことを任されました。

4

2 に答える 2

0

Rails 3 を使用している場合は、このガイドを参照することをお勧めしますhttp://guides.rubyonrails.org/ajax_on_rails.html

于 2013-01-16T17:57:06.787 に答える
0

これはかなり醜いですが...

def login
  if request.post?  
    @frontendu = Frontenduser.authenticate(params[:email], params[:login_password], params[:store_id])
    if @frontendu
      session[:frontend_user] = @frontendu.id
      @fuser=Frontenduser.find(session[:frontend_user])
      @fuser.update_attributes(:is_logged =>true)

      # change this part
      if @fuser.save
        flash[:message]  = "Login successful."
        redirect_to :back
      else 
        # do something here
      end

      # original function
    else
      redirect_to :back
    end 
  end
end

サンプルコントローラーを足場にして、例として使用することをお勧めします。

rails g controller TestyMcTest

また、リクエストが発生しているコンテキストを利用する必要があります。これは、scaffold-ed コントローラーのフォーマット部分になります。リクエストのタイプに基づいて、さまざまなことを行うことができます。

于 2013-01-16T18:45:49.453 に答える