Helpers - компьютеры, интернет, программирование

Понимание синтаксиса Ruby

Возможные дубликаты:
Что такое лучший способ изучить Ruby?
Объяснить синтаксис итератора на Ruby на рельсах

Я все еще изучаю рубин, рубин на рельсах и все такое. Я лучше понимаю весь синтаксис ruby ​​и rails, но этот меня немного озадачил.

respond_to do |format|
  format.html # index.html.erb
  format.xml  { render :xml => @contact_lists }
end

Я думаю, что response_to - это метод, который требует определенной процедуры. Эти два формата выглядят так, как будто они тоже могут быть вызовами методов, но я не знаю.


  • Кроме того, если у вас нет намерения возвращать xml contant, вы можете удалить всю конечную часть response_to do ... Код станет только проще. 15.09.2010

Ответы:


1

respond_to - это метод, который блокирует. Блок принимает один аргумент, который здесь называется format.

Теперь вы вызываете два метода для format. html который вы вызываете без аргументов. И xml, который вы вызываете блоком.

Этот блок не принимает аргументов и содержит вызов метода рендеринга с хешем в качестве аргумента. Хэш содержит ключ :xml и значение @contact_lists.

14.09.2010

2

Ага, ты прав.

Вызовы методов Ruby поначалу немного озадачивают, потому что вы можете опустить паретезис, и они могут получить блоки кода.

Итак, вот объяснение:

respond_to do |format| 

Вызовите метод respond_to и передайте ему блок о том, что делать с format, которое он получит.

    format.html # index.html.erb

С помощью этого объекта, называемого format, вызовите метод html

    format.xml  { render :xml => @contact_lists }

И метод xml, который, в свою очередь, получает другой блок (do / en и {} имеют другой синтаксис для передачи блока.)

end

Закончить первый блок

См. это другое, другие ответы.

14.09.2010

3

Я думаю, что этот пост может вам помочь.

Также найдите минутку, чтобы прочитать документацию response_to. Стоит знать, что в Rails для этого метода были изменены 3.

Без поддержки веб-сервиса действие по сбору данных для отображения списка людей могло бы выглядеть примерно так:

def index
  @people = Person.find(:all)
end

Вот то же действие с встроенной поддержкой веб-сервисов:

def index
  @people = Person.find(:all)

  respond_to do |format|
    format.html
    format.xml { render :xml => @people.to_xml }
  end
end

Это говорит о том, что «если клиенту нужен HTML в ответ на это действие, просто ответьте, как мы делали раньше, но если клиент хочет XML, верните ему список людей в формате XML». (Rails определяет желаемый формат ответа из HTTP-заголовка Accept, отправленного клиентом.)

Предположим, у вас есть действие, которое добавляет нового человека, при необходимости создавая его компанию (по имени), если она еще не существует, без веб-сервисов, это может выглядеть так:

def create
  @company = Company.find_or_create_by_name(params[:company][:name])
  @person  = @company.people.create(params[:person])

  redirect_to(person_list_url)
end

Вот то же действие с встроенной поддержкой веб-сервисов:

def create
  company  = params[:person].delete(:company)
  @company = Company.find_or_create_by_name(company[:name])
  @person  = @company.people.create(params[:person])

  respond_to do |format|
    format.html { redirect_to(person_list_url) }
    format.js
    format.xml  { render :xml => @person.to_xml(:include => @company) }
  end
end
14.09.2010
  • +1 за пояснение, как Ruby определяет желаемый формат ответа! 20.04.2011
  • Новые материалы

    Интуитивное понимание тензоров в машинном обучении
    Тензор является важной концепцией во многих научных областях, таких как математика, физика, обработка сигналов и компьютерное зрение, и это лишь некоторые из них. В математике тензор — это..

    Использование машинного обучения для диагностики болезни Альцгеймера, часть 4
    Маркеры семантической согласованности для ранней диагностики болезни Альцгеймера (arXiv) Автор: Давиде Колла , Маттео Дельсанто , Марко Агосто , Бенедетто Витиелло , Даниэле Паоло Радичони..

    Почему объяснимость так важна прямо сейчас?
    По мере того, как системы искусственного интеллекта и инструменты на основе машинного обучения распространяются в нашей повседневной жизни, как практики, так и критики все чаще заявляют о..

    Анимированный математический анализ
    Использование Manim для создания математических анимированных визуализаций Визуализация данных помогает понять скрытые закономерности в данных, которые невозможно визуализировать..

    Создание простого слайдера изображений с помощью JavaScript
    Узнайте, как создать базовый слайдер изображений с помощью HTML, CSS и JavaScript. Введение В этом уроке мы создадим удобный слайдер изображений, используя JavaScript, HTML и CSS. Ползунок..

    Создание базы данных с помощью супергероя «Python»
    В этом посте мы узнаем, как создать «базу данных SQLite с помощью модуля python sqlite3, создав простую функцию входа и регистрации. Готовы ли вы к этому путешествию? Если да , давайте приступим..

    ИИ для чайников: руководство для начинающих по пониманию будущего технологий
    Вы чувствуете, что остались позади в мире ИИ? Не волнуйтесь, вы не одиноки! Со всей этой шумихой вокруг искусственного интеллекта может быть трудно понять, с чего начать. Но не позволяйте сленгу..