私はコントローラーでアクションを起こしました
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
'created_at'および 'type_of_pressure'のようなフィールドが含まれている必要があります。しかし、私がそれらを呼び出そうとすると、jsは「undefinied」を返します。
言及するカップルの事柄。
リクエストパラメータに応じて出力タイプを決定することは、まったく信頼できません。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呼び出しで正しく設定するから提供されることを忘れないでください。
JSON出力を正しくフォーマットするには、index.json
ビューを適切に設定する必要があります。当然のことながら、yuは、を呼び出すことにより、コントローラーアクションから直接これらのジャーナルをレンダリングできますrender json: @journals
が、ビューははるかに柔軟です。JSONビューをカスタマイズするには、jbuilder
(Railsにすでに付属している)のようなシリアル化ツールを使用することを好みます。したがってindex.json.jbuilder
、app/views/journals
ディレクトリでビューを開き、次のようなものを配置します。
json.array! @journals do |journal|
json.(journal, :id, :user_id, :systolic, :diastolic, :url, :type_of_pressure, :anything_else_you want)
end
その他のオプションと機能については、jbuilderのドキュメントを確認してください。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加