2014-06-09 76 views
0

我還沒有行動的各個領域中的控制器JSON在軌道4,5不包含對象

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 

當我與參數「日期」稱呼它必須返回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 

它必須包含'created_at'和'type_of_pressure'字段。但是當我試圖給他們打電話時,js會返回'未確定'。

+0

可以發佈什麼是確切的錯誤? – Pavan

回答

0

夫婦的事情提及。

  1. 根據請求參數決定輸出類型根本不是可以依靠的。 Rails提供request.format爲您的應用中的所有路由。所以你需要使用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調用正確設置它。

  2. 要正確格式化您的JSON輸出,您需要正確設置您的index.json視圖。 yu的yu可以通過調用render json: @journals直接從控制器操作中呈現這些日誌,但該視圖更加靈活。要定製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 
    

    退房的jbuilder docs更多選項和功能。