0

我是 Rails 4 上的 Rails 初学者,我正在边做边学。我的简单测试应用程序上有用户和帖子。我的用户模型

has_many :posts

我的帖子模型

belongs_to :user

我有一个用于创建这样的新帖子的部分表单

<%= form_for @post do |f| %>
<% if @post.errors.any? %>
    <ul>
        <% @post.errors.full_messages.each do |msg| %>
            <li><%= msg %></li>
        <% end %>
    </ul>
<% end %>
<%= f.label :title %>
<%= f.text_field :title %>
<br/>
<%= f.label :body %>
<%= f.text_area :body %>
<br/>
<%= f.submit %>

我的路线文件

resources :users do
  resources :posts, except: [:index]
end

当我尝试创建新帖子时,我得到一个

没有路线匹配 [POST] "/posts"

我假设它不工作是因为我的表单部分是如何设置的。我认为

form_for @post do |f|

需要有所不同,但我不确定将其更改为什么。有什么建议么?谢谢。

4

2 回答 2

2

对于这条路线

resources :users do
  resources :posts, except: [:index]
end

您必须使用

form_for [@user, @post] do |f|

或者

form_for [current_user, @post] do |f|
于 2013-08-16T19:34:39.827 回答
0

您应该except: [:index]从路线中删除。那必须阻止 /posts 访问。

于 2013-08-16T19:29:29.207 回答