Использование не Railsy маршрута для предварительного заполнения формы - PullRequest
0 голосов
/ 03 июня 2010

У меня есть много экземпляров модели Rails, Post. При просмотре отдельного сообщения я хотел бы создать форму для создания дочернего элемента Post с именем Comment. Я хотел бы предварительно заполнить эту форму скрытым тегом, который содержит post_id, который является внешним ключом в Comment.

Railsy способ сделать это состоит в том, чтобы создать причудливый маршрут, такой как:

/comments/new/post/:post_id

Тем не менее, это повышает файл маршрутов и не оставляет большой гибкости. Допустим, я хочу создать ссылку где-нибудь еще, которая предварительно заполняет другой атрибут формы ... тогда мне придется добавить другой маршрут для этого.

Так что я думаю, что я собираюсь создать URL-адреса, подобные этому на /posts/show/:id:

/comments/new?comment[post_id]=<%= @post.id %>

Таким образом, я могу добавлять любые другие атрибуты по мере необходимости. Я знаю положительную сторону, связанную с этим, теперь, каковы недостатки?

1 Ответ

2 голосов
/ 06 июня 2010

Просто используйте new_comment_path :comment => { :post_id => @post.id } для создания таких URL. Вы можете обернуть его в помощника, если хотите.

Однако у стиля /comments/new/post/:post_id URL не должно быть недостатков, поскольку вы также можете добавить дополнительные параметры:

new_post_comment_path @post, :comment => { :additional => "parameters", ... }

приведет к

/posts/:post_id/comments/new?comment[additional]=parameters&...

и в вашем действии выполните:

def new
  @post = Post.find params[:post_id]
  @comment = @post.build params[:comment]
end

и визуализируйте вашу форму ...

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