1

私のコードでは、次のような JSON オブジェクトを解析しています [{"name":"karthi"},{"name":"shreshtt"},{"name":"jitu"},{"name":null},{"name":null},{"name":null},{"name":null}]

ここでは、すべての名前を 1 つの配列オブジェクトにまとめたいと考えています。これが、現在のコントローラーの外観です。@hotels結果の名前配列を変数に格納したい。

コントローラー.erb

respond_to :json, :xml
  def index
    @hotels = Hotel.all

    respond_to do |format|
      format.html # show.html.erb
      format.json { render json: @hotels.to_json(:only => [ :name ]) }
    end
  end

ビュー/hoels/index.json.erb

[ 
hotel: <% @hotels.each do |hotel| %>
    { 'name': "<%= hotel.name.to_json.html_safe %>" }
     <% unless index== @hotels.count - 1%>
  <% end %>
   <% end %>
]
4

3 に答える 3

0

名前だけを配列に追加しますか? どうですか:

a = [{name: "karthi"},{name: "shreshtt"},{name: "jitu"},{name: nil},{name: nil},{name: nil},{name: nil}]
@hotel = []
a.collect{|a_name| @hotel << a_name[:name]}
=> ["karthi", "shreshtt", "jitu", nil, nil, nil, nil]
@hotel.compact!
=> ["karthi", "shreshtt", "jitu"]
于 2013-05-10T12:22:54.737 に答える
0

次のようにすることができます

hotels = Hotel.select("name").where("name is not NULL")
json_obj = {hotels: hotels}.to_json

format.json { render json: json_obj }
于 2013-05-10T12:43:30.610 に答える