在我的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完成。提前谢谢。
答案 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