Пользовательские атрибуты не-db в модели rails не возвращаются в обратный вызов jquery - PullRequest
2 голосов
/ 18 марта 2011

У меня есть следующая модель

class Game < ActiveRecord::Base

  # Associations
  belongs_to :black_member,         :class_name => "Member"
  belongs_to :white_member,         :class_name => "Member"
  belongs_to :current_move_member,  :class_name => "Member"
  belongs_to :game_requests, :foreign_key => "game_request_id"

  #Validations
  #attr_accessible :opponent_nickname, :current_member_id

  # Instance methods
  attr_accessor :opponent_nickname, :current_member_id

  def setup
    if self.white_member_id == self.current_member_id
      self.opponent_nickname = "test"
    end
  end

end

Мой контроллер:

# POST /games/setup.json 
  def setup

    @game = Game.find(params[:id])
    @game.current_member_id = currentmember.id
    @game.setup

    respond_to do |format|
      format.json { render :json => @game }
    end

  end

И моя функция js, которая отправляет и получает запрос ajax на контроллер:

// Setup all initial game details on game startup

    SITE.Game.LoadGameDetails = function() {

      gameId = $(".edit_game").attr("id").split('_')[2];

      $.post('/games/setup', {id: gameId},
        function(result) { 
          console.log("opp = " + result.opponent_nickname);
        }
      ,"json");
    }

По какой-то причине мой вызов ajax только кажется возвращающим игровые атрибуты, которые автоматически генерируются activeRecord.Похоже, он не отправляет обратно псевдоним оппонента.

Есть идеи, почему?

Спасибо

1 Ответ

6 голосов
/ 18 марта 2011

Попробуйте это:

render :json => @game.to_json(:methods => :opponent_nickname)

Сериализатор json по умолчанию поставляется из ActiveRecord, вам нужно добавить новый атрибут в представление json объекта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...