Rails + AngularJS +无法访问View中单个模型的所有列

时间:2014-10-06 18:50:53

标签: json angularjs ruby-on-rails-3.2

在我的rails应用程序中,我正在尝试使用AngularJS服务获取Logged-In-User详细信息。但是,当从服务器访问JSON时,我只获得了几列而不是模型中存在的所有列。

页面上只显示FirstName,LastName和Primary Email,其余部分为空。

我尝试直接点击网址:http://www.example.com/LoggedInUserInfo.json

输出:{" first_name":"用户"," last_name":" 1"," primary_email& #34;:" user_one@mailinator.com"}

用户模型

class User < ActiveRecord::Base
  attr_accessible :blood_group,:city,:country,:first_name,:gender,:mobile_number,
  :phone_number,:primary_email,:secondary_email,:state,:street_address,
  :street_address2, :username, :zip_code

控制器方法

def logged_in_user_info
    @user = User.find(1)
    render :json => @user
    #render :json => @user.as_json(:only => [:first_name, :last_name, 
    #                                        :username, :date_of_birth])
end

AngularJS服务

var user_app = angular.module("UserApp", []);
user_app.controller("LoggedInUserInfoCtrl", function($scope, $http) {
  $http.get('/LoggedInUserInfo.json').
    success(function(data, status, headers, config) {
      $scope.logged_in_user = data;
    }).
    error(function(data, status, headers, config) {
      // log error
    });
});

路线

match '/LoggedInUserInfo' => 'dashboard#logged_in_user_info', :via => [:get]

请建议带上所有专栏。我认为每件事都必须使用Rails Controller完成。提前谢谢。

1 个答案:

答案 0 :(得分:0)

经过大量的谷歌搜索和控制器的大量更改后,获得了在视图中呈现或获取特定列的方法。

刚刚创建了一个辅助函数,以便我们可以从视图中调用以重新排列或重新格式化我们从控制器调用的输出。问题解决了。

def logged_in_user_info
  @user = User.find(1)
  respond_to do |format|
    format.html
    format.json do
      render :json => custom_json_for_user(@user)
    end
  end    
end

private
def custom_json_for_user(user_data)
  user_list = 
    { :id => user_data.id,
      :first_name => user_data.first_name.to_s,
      :last_name => user_data.last_name.to_s,
      :date_of_birth => user_data.date_of_birth.to_s,
      :username => user_data.username,
      :primary_email => user_data.primary_email,
      :secondary_email => user_data.secondary_email,
      :gender => user_data.gender
    }    
  user_list.to_json
end