1

railscast #160の 基本コードを使用して、ログイン、ログアウト、およびアカウントの登録ができる非常にシンプルなサイトをセットアップしました。(ユーザー移行テーブルと関連するビューから「ユーザー名」を削除したため、電子メール アドレスのみが必要であることを除いて、ほとんど同じです)

JSON経由でログインできるように、新しいログインアクションを作成しようとしています。

http://app:3000/apilogin?email=my@email.com&password=p4ssw0rdget リクエストを送信して、Rails アプリにリクエストの送信元の IP アドレスを保存させ (ログインが正しかった場合)、関連する応答を (JSON で)送信できるようにしたいと考えています。

これまでのところ、次のようにセクションを追加しましたcontrollers/user_sessions_controller.rb

class UserSessionsController < ApplicationController
  #...
  def new_api
    respond_to do |format|
      format.json
    end
  end
end

宛先routes.rb:

map.apilogin "apilogin", :controller => "user_sessions", :action => "new_api"

でも何を入れようか迷うviews/user_sessions/new_api.json.rb!手伝ってくれますか?

4

2 に答える 2

4

ビューを定義する必要はまったくありません。コントローラーから適切な json を返すだけです。

def new_api
  @user_session = UserSession.new({:email => params[:email], :password => params[:password]})
  respond_to do |format|
    if @user_session.save
      format.json { render :json => {:success => true} }
    else
      format.json { render :json => {:success => false, :message => 'incorrect username or password'}, :status => :unauthorized }
    end
  end
end
于 2009-12-02T11:57:02.240 に答える
0

次のようなことができます。

  def new_api
    respond_to do |format|
      format.json { render :json => user.slice(:name).to_json }
    end
  end

views/user_sessions/new_api.json.erbまたは、通常の erb コードを記述する場合と同様に JSON を生成することもできます。ただし、良い考えではありません。

{"name":"<%= @user.name %>"}
于 2009-12-02T03:10:50.680 に答える