Простые посты / комментарии маршрута в рельсах 3 - PullRequest
0 голосов
/ 09 сентября 2010

Я пытаюсь написать маршрут, который фиксирует отношения один-ко-многим между постами и комментариями в вашем среднем блоге

То, что у меня сейчас есть, это post.rb

class Post < ActiveRecord::Base
  has_many :comments
end

, за которым следует comment.rb (среди всех других настроек БД, включая post_id: integer для комментария)

class Comment < ActiveRecord::Base
  belongs_to :post
end

В маршрутах я пытаюсь использовать

resources :posts do
  resources :comments
end

но мне не повезло - какая-нибудь помощь от эксперта по рельсам 3?

Редактировать

Когда я нажимаю на "show" действие моего пост-контроллера через этот URL-адрес

http://localhost:3000/posts/3

Я получаю ошибку маршрутизации

No route matches {:controller=>"comments", :action=>"create"}

Это из-за моей формы комментариев в шаблоне шоу моего поста

<% form_for Comment.new do |f| %>
<p>
  <%= f.label :body, "new comment" %><br>
  <%= f.text_area :body %>
</p>
<p><%= f.submit "add comment" %></p>
<% end %>

Нужно ли мне изменять форму, потому что до этого изменения маршрутов, когда я делал простой исходный код, действие указывало на / comments / {id}

Редактировать # 2

Я заметил, что после того, как я изменил свои маршруты, чтобы выглядеть так

 resources :comments
  resources :posts

  resources :posts do
    resources :comments
  end

У меня все работает, за исключением того, что мой созданный комментарий не знает post_id (в MySQL комментарий сохраняется, но он не знает сообщение, которому он принадлежит)

Может быть, это моя форма?

1 Ответ

2 голосов
/ 09 сентября 2010

Ресурсы You Comment определяются как вложенные ресурсы, а не как независимые ресурсы,

, поэтому для сгенерированного пути также требуется информация о сообщениях.поэтому измените оператор form_for на

form_for [@ post, Comment.new] do | f |

http://guides.rubyonrails.org/routing.html, прочитайте это, чтобы понять больше

и этот http://railscasts.com/episodes/139-nested-resources (использует очень старую версию рельсов)

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