Простой Authlogic Вопрос: вход в JSON? - PullRequest
1 голос
/ 02 декабря 2009

Работа с railscast # 160 базовый код Я создал очень простой сайт, который позволяет мне входить, выходить и регистрировать учетную запись. (Это почти идентично, за исключением того, что я удалил «имя пользователя» из таблицы миграции пользователей и соответствующих представлений, поэтому требуется только адрес электронной почты)

Я сейчас пытаюсь создать новое действие для входа в систему, чтобы я мог войти через JSON.

Я бы хотел иметь возможность отправить запрос get на http://app:3000/apilogin?email=my@email.com&password=p4ssw0rd, чтобы приложение 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! Вы можете помочь?

Ответы [ 2 ]

4 голосов
/ 02 декабря 2009

Вам вообще не нужно определять представление - просто верните соответствующий 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
0 голосов
/ 02 декабря 2009

Вы можете сделать что-то вроде этого:

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

Или вы также можете сгенерировать JSON в views/user_sessions/new_api.json.erb, как если бы вы писали обычный код erb. Не очень хорошая идея:

{"name":"<%= @user.name %>"}
...