没有id参数的表单URL?

时间:2016-12-13 15:09:26

标签: ruby-on-rails

我有一张表格:

form_for :comment, url: comment_path, method: :post do |f|

渲染后,变为

<form action="/comments/1" accept-charset="UTF-8" method="post">

我希望action只有"/comments"而没有id,因为这是创建新评论的实际路径。当然,我收到一条很好的错误消息,说我的路径无效:

No route matches [POST] "/comments/1"
...
comments_path   GET     /comments(.:format)     comments#index
                POST    /comments(.:format)     comments#create
...

我把错误归结为行动中的错误是什么?

2 个答案:

答案 0 :(得分:4)

使用约定优于配置

# comments/_form.html.erb
<%= form_for(@comment) %>
<% end %>

# comments/new.html.erb
<%= render partial: 'form' %>

@comment是新记录时,它将使用路径comments_path,对于现有记录,它将使用comment_path(@comment)并将方法设置为PATCH。这使您可以在不同的视图中使用相同的表单部分。

当您在正常CRUD操作之外执行某些操作时,您只需要设置pathmethod选项。

答案 1 :(得分:1)

您使用了comment_path这是show / edit / destroy路线。请改用comments_path