В Rails, как вы визуализируете JSON, используя представление?

Предположим, вы находитесь в своем контроллере пользователей и хотите получить ответ json для запроса на показ, было бы неплохо, если бы вы могли создать файл в вашем views / users / dir с именем show.json и после вашего users # show действие завершено, он отображает файл.

В настоящее время вам нужно сделать что-то вроде:

def show
  @user = User.find( params[:id] )
  respond_to do |format|
    format.html
    format.json{
      render :json => @user.to_json
    }
  end
end

Но было бы неплохо, если бы вы могли просто создать файл show.json, который автоматически обрабатывается так:

def show
  @user = User.find( params[:id] )
  respond_to do |format|
    format.html
    format.json
  end
end

Это спасло бы меня от горя и избавило бы от ужасно грязного чувства, которое я испытываю, когда рендерил свой JSON в контроллере

.
123
задан Matthew 18 January 2010 в 18:31
поделиться

3 ответа

Вы должны быть в состоянии сделать что-то вроде этого в вашем ende_to Block:

respond_to do |format|
    format.json 
    render :partial => "users/show.json"
end

, который сделает шаблон в приложении / представлениях / пользователях / _show. json.erb .

63
ответ дан 24 November 2019 в 01:16
поделиться

Попробуйте добавить вид Пользователи / Show.json.erb Это должно быть отображено, когда вы делаете запрос на формат JSON, и вы получаете дополнительное преимущество оказанные erb тоже, поэтому ваш файл может выглядеть что-то вроде этого

{
    "first_name": "<%= @user.first_name.to_json %>",
    "last_name": "<%= @user.last_name.to_json %>"
}
55
ответ дан 24 November 2019 в 01:16
поделиться

Просто добавьте show.json.erb файл с содержимым

<%= @user.to_json %>

Иногда бывает полезно, когда нужны дополнительные вспомогательные методы, недоступные в контроллере, например, image_path(@user. avatar) или что-то для генерации дополнительных свойств в JSON:

<%= @user.attributes.merge(:avatar => image_path(@user.avatar)).to_json %>
10
ответ дан 24 November 2019 в 01:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: