我有一个基本设置,您可以在帖子中创建评论。我想创建一个 POST 方法,该方法采用文本区域并使用文本区域的正文创建注释。但是我的 Comment 模型需要一个 Post 外键。有什么方法可以让我在没有隐藏表单元素或类似元素的情况下将帖子与正文一起传递?并且不使用 AJAX。这是我的表单代码:
= form_tag(comments_path) do
= text_field_tag(:body)
= submit_tag("Submit Answer")
我有一个基本设置,您可以在帖子中创建评论。我想创建一个 POST 方法,该方法采用文本区域并使用文本区域的正文创建注释。但是我的 Comment 模型需要一个 Post 外键。有什么方法可以让我在没有隐藏表单元素或类似元素的情况下将帖子与正文一起传递?并且不使用 AJAX。这是我的表单代码:
= form_tag(comments_path) do
= text_field_tag(:body)
= submit_tag("Submit Answer")
可以选择使用嵌套资源。 即把它放在URI 中。
# routes.rb
resources :posts do
resources :comments
end
这将创建一些路线,即/posts/:post_id/comments(.:format)
表格可能如下所示:
form_for Comment.new, url: post_comments_path(post_id: @post), method: :post do |f|
# ...
不过,您的控制器有责任Post
在params
保存您的Comment
.
最后一点:这种方法是合理的,因为它是对父资源的引用。将任何其他松散变量附加到 URI 是惰性的。
在你的Post.rb
accepts_nested_attributes_for :comments
在你的PostController.rb
def new
@post = Post.new
@post.comments.build
end
在你的views/posts/new.html.erb
<%= form_for @post do |f| %>
<%= f.label :content %>
<%= f.text_field :content %>
<%= f.fields_for :comments do |comment_form| %>
<%= comment_form.text_field :body %>
<% end %>
<%= f.submit %>
<% end %>