如何构建用于创建属于用户的帖子的表单?

时间:2013-08-16 19:24:42

标签: ruby-on-rails

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

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|

需要有所不同,但我不确定要改变它的内容。有什么建议?感谢。

2 个答案:

答案 0 :(得分:2)

这条路线

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

您必须使用

创建表单
form_for [@user, @post] do |f|

form_for [current_user, @post] do |f|

答案 1 :(得分:0)

您应该从路线中删除except: [:index]。这必须阻止/发布访问权限。