1

投稿内からコメントを作成できる基本的なセットアップがあります。テキスト領域を取得し、テキスト領域から本文を含むコメントを作成する POST メソッドを作成したいと考えています。しかし、私の Comment モデルには Post 外部キーが必要です。非表示のフォーム要素などを持たずに、投稿を本文と一緒に渡す方法はありますか? そしてAJAXを使わずに。ここに私のフォームコードがあります:

= form_tag(comments_path) do
  = text_field_tag(:body)
  = submit_tag("Submit Answer")
4

2 に答える 2

2

ネストされたリソースを使用するオプションがありますつまり、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からを見つけるのはコントローラの責任です。paramsComment


最後の注意: このアプローチは、親リソースへの参照であるという理由だけで正当化されます。他の緩い変数を URI に追加するのは面倒です。

于 2013-06-15T06:46:40.107 に答える
0

あなたの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 %>
于 2013-06-15T06:52:25.677 に答える