Ajax Rails 4中的JSON不包含对象的所有字段
我在控制器中没有动作Ajax Rails 4中的JSON不包含对象的所有字段,ajax,json,ruby-on-rails-4,Ajax,Json,Ruby On Rails 4,我在控制器中没有动作 def index if UserDatum.find_by_user_id(current_user.id) == nil redirect_to new_user_datum_path end @journal = Journal.new authorize! :read, @journals if params[:date] @journals = Journal.all.where("user_i
def index
if UserDatum.find_by_user_id(current_user.id) == nil
redirect_to new_user_datum_path
end
@journal = Journal.new
authorize! :read, @journals
if params[:date]
@journals = Journal.all.where("user_id = #{current_user.id} and DATE(created_at) = DATE('#{params[:date]}')").order("created_at DESC")
@date = params[:date]
return
end
@journals = Journal.all.where("user_id = #{current_user.id} and DATE(created_at) = DATE('#{Time.now}')").order("created_at DESC")
end
当我用param“date”调用它时,它必须返回JSON(我使用AJAX)。但这里是我的JSON:
Object {id: 5, user_id: 31, systolic: 185, diastolic: 75, url: "http://localhost:3000/journals/5.json"} application.js?body=1:72
Object {id: 4, user_id: 31, systolic: 110, diastolic: 70, url: "http://localhost:3000/journals/4.json"} application.js?body=1:72
Object {id: 3, user_id: 31, systolic: 125, diastolic: 85, url: "http://localhost:3000/journals/3.json"} application.js?body=1:72
Object {id: 2, user_id: 31, systolic: 130, diastolic: 90, url: "http://localhost:3000/journals/2.json"} application.js?body=1:72
它必须包含“创建时”和“压力类型”字段。但是,当我尝试调用它们时,js返回“未定义”。有几件事需要提及
请求格式。因此,您需要使用respond_to
块来定义输出。像这样
respond_to do |format|
format.html { @journals = Journal.all.where("user_id = #{current_user.id} and DATE(created_at) = DATE('#{Time.now}')").order("created_at DESC") }
format.json {
@date = params[:date] || Time.now #set the default value just in case nothing was sent
@journals = Journal.all.where("user_id = #{current_user.id} and DATE(created_at) = DATE('#{@date}')").order("created_at DESC")
}
不要忘记,这个JSON将由/journals提供。JSON
在AJAX调用中正确设置它
index.JSON
视图。通过调用render json:@journals
,cource yu可以直接从控制器操作呈现这些日志,但是视图要灵活得多。为了定制JSON视图,我更喜欢使用序列化工具,如jbuilder
(已经随Rails提供)。因此,在您的app/views/journals
目录中打开index.json.jbuilder
视图,并在其中放置如下内容:
json.array! @journals do |journal|
json.(journal, :id, :user_id, :systolic, :diastolic, :url, :type_of_pressure, :anything_else_you want)
end
有关更多选项和功能,请查看你能告诉我确切的错误是什么吗?