Ruby on rails rails 4如何以表单形式传递对象id?
我有一个“有很多”评论的公告,评论“属于”公告关系。 在我的根目录下,我按每个循环显示公告,并尝试在每个新闻下制作评论表单 我的根路径操作:Ruby on rails rails 4如何以表单形式传递对象id?,ruby-on-rails,ruby-on-rails-4,form-for,Ruby On Rails,Ruby On Rails 4,Form For,我有一个“有很多”评论的公告,评论“属于”公告关系。 在我的根目录下,我按每个循环显示公告,并尝试在每个新闻下制作评论表单 我的根路径操作: def home @announcements = Announcement.page(params[:page]).order('id DESC') end 下面是我的通告: <% @announcements.each do |announcement| %> . .
def home
@announcements = Announcement.page(params[:page]).order('id DESC')
end
下面是我的通告:
<% @announcements.each do |announcement| %>
.
.
.
<div class="create_comment form-inline">
<%= form_for(announcement.comments.build) do |form| %>
<%= form.label :author, "Autor:" %>
<%= form.text_field :author, class: "form_control" %>
<%= form.label :content, "Treść:" %>
<%= form.text_field :content, class: "form_control" %>
<%= form.submit "Dodaj!", class: "btn btn-primary", url: comments_path %>
<% end %>
</div>
</div>
<% end %>
但我得到一个错误:没有ID就找不到公告
我知道我可以使用隐藏的_字段并将其传递给注释参数,但这不是安全的解决方案
我刚刚开始我的Rails冒险,所以如果有人知道我的错误在哪里,请尝试做出完整的解释 好的,在@notulyses的帮助下,我找到了解决方案 需要进行以下工作: routes.rb中的第一条:注释需要嵌套在公告中,以便正确加入
resources :announcements, only: [:new,:create,:update,:edit,:destroy,:show] do
resources :comments, only: [:create, :destroy]
end
控制器公告中的第二条注释应通过公告参数找到:
@announcement = Announcement.find(params[:announcement_id])
到第三步,这是我的部分:,我需要为属性设置适当的形式
form_for(announcement.comments.create, url: announcement_comments_path(announcement.id) )
它需要url:param,因为root位于不同的控制器中,然后是注释
尤皮
form_for(announcement.comments.create, url: announcement_comments_path(announcement.id) )