Каков наиболее гибкий и правильный способ изменения разных строк записи на разных страницах Rails? - PullRequest
0 голосов
/ 29 марта 2012

У меня просто есть Запись книги, и я хочу иметь несколько страниц для изменения информации о Книге:

http://example.com/books/1/edit/photos - здесь я хотел бы иметь форму для загрузки фотографий

http://example.com/books/1/edit/reviews - здесь я хочу добавить несколько отзывов

http://example.com/books/1/edit/authors - здесь, изменить или добавить новых авторов

Можно ли не создавать отдельныедействие для каждой страницы редактирования и сделать это одним действием "edit"?

Ответы [ 3 ]

0 голосов
/ 30 марта 2012

Вы можете иметь разные формы в каждом из представлений, которые открывают только те части, которые вы хотите отредактировать, и каждая из этих форм публикует одно и то же действие update.

Если вы используете form_for @book, форма всегда будет отправлять на /books/:id.

И вы можете добавить before_filter к вашему контроллеру, который извлекает запись книги, тогда вам не нужно создавать отдельные действия для этих представлений:

class BooksController < ActionController::Base
  before_filter :load_book

private
  def load_book
    @book = Book.find_by_id(params[:id])
  end
end

Это делает@book доступно для просмотра.

0 голосов
/ 10 апреля 2012

Для каждого действия, такого как редактирование фотографий и обзоров, вы должны создать отдельное членство.В каждой member_action вы можете создавать формы для редактирования с помощью f.input.Сложная часть будет перенаправления.Вы, вероятно, захотите перенаправить фото авторам с помощью вызова redirect_to

0 голосов
/ 29 марта 2012

Вам необходимо настроить некоторые модели has_many для обработки реляционных данных, связанных с вашими книгами, см. http://guides.rubyonrails.org/association_basics.html#the-has_many-association.

После того, как это сделано, вы можете создать несколько форм, чтобы довольно легко обрабатывать эти отношения.

Если вы новичок в рельсах, вы можете захотеть использовать систему интерфейса администратора, такую ​​как activeadmin , которая поможет вам настроить подобные вещи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...