web-dev-qa-db-ja.com

rails-ビューでJSONオブジェクトをレンダリングする方法

現在、配列を作成して使用しています。

render :json => @comments

これは単純なJSONオブジェクトには問題ありませんが、現在、私のJSONオブジェクトにはいくつかのヘルパーが必要であり、すべてが壊れており、コントローラーにヘルパーインクルードが必要であるため、解決されるよりも多くの問題が発生するようです。

では、このJSONオブジェクトをビューで作成するにはどうすればよいでしょうか。ヘルパーを使用するときに、何かをしたり、何かを壊したりすることを心配する必要はありません。今のところ、コントローラーでJSONオブジェクトを作成する方法は次のようになりますか?ビューに移行するのを手伝ってください:)

# Build the JSON Search Normalized Object
@comments = Array.new

@conversation_comments.each do |comment|
  @comments << {
    :id => comment.id,
    :level => comment.level,
    :content => html_format(comment.content),
    :parent_id => comment.parent_id,
    :user_id => comment.user_id,
    :created_at => comment.created_at
  }
end

render :json => @comments

ありがとう!

17
AnApprentice

そのコードをヘルパー自体に記述することをお勧めします。次に、配列で.to_jsonメソッドを使用します。

# application_helper.rb
def comments_as_json(comments)
  comments.collect do |comment|
    {
      :id => comment.id,
      :level => comment.level,
      :content => html_format(comment.content),
      :parent_id => comment.parent_id,
      :user_id => comment.user_id,
      :created_at => comment.created_at
    }
  end.to_json
end

# your_view.html.erb
<%= comments_as_json(@conversation_comments) %>
13

または使用:

<%= raw(@comments.to_json) %> 

hTMLエンコーディング文字をエスケープします。

25
JayCrossler
<%= @comments.to_json %>

トリックも行う必要があります。

6
Daniel Tsadok