Редактирование на месте в Rails 3 - PullRequest
10 голосов
/ 16 августа 2010

Существует несколько вариантов редактирования модели на месте на странице Показать, т.е. без необходимости загружать форму на странице Редактировать. Например, см. http://www.ruby -toolbox.com / Categories / rails_in_place_editing.html .

Кто-нибудь имел опыт использования любого из этих вариантов (или других) в Rails 3? Любые указатели или советы?

В моем случае у меня довольно длинная форма, состоящая из переменного количества элементов. С точки зрения удобства использования, имеет смысл редактировать текст в этих элементах на одной странице, вместо того, чтобы нуждаться в кнопке «Редактировать» для каждого, который отправляет пользователя на страницу редактирования для конкретного элемента.

Ответы [ 2 ]

13 голосов
/ 16 августа 2011

Отличный вопрос!

  • in_place_editing от dhh, создателя Rails.Он поддерживается основной командой Rails.Так что это, безусловно, следует рассмотреть.

  • Hobo - это большой фреймворк, имеющий функции редактирования на месте спереди и по центру.Это гладкий пакет, но может быть больше, чем вы хотите или нужно.

Обновлено для Rails 3 Райан из Railscasts рекомендует Best in Place драгоценный камень.См. Railscast с примером кода и дополнительной информацией.

1 голос
/ 17 августа 2010

Конечно, это имеет смысл для меня. Я делаю это все время.

Например, я работаю над сложной полиморфной формой вложенной модели, и она имеет только два вида. Индекс и часть для динамического добавления к нему дополнительных атрибутов.

Если вы знаете AJAX, это действительно может помочь вашему пользовательскому интерфейсу в том, что вашим пользователям даже не придется нажимать кнопку сохранения.

Для достижения минимума этого. Установите index.html.erb с вашей формой внутри.

В вашем контроллере вы можете указать свои действия следующим образом:

def update
  @quick_fact = @organization.quick_facts.find(params[:id])
  if @quick_fact.update_attributes(params[:tab])
    flash[:notice] = 'Text Tab was successfully updated.'
    redirect_to quick_facts_organization_path(@organization)
  else
    render :action => "index", :id => params[:id]
 end
end
...