0

別のモデル Tag と多対多の関係を持つモデル Post があります。

class Post < ActiveRecord::Base
  attr_accessible :body, :section_id, :solved, :subject, :tag_ids, :user_id
  belongs_to :user
  belongs_to :section
  has_and_belongs_to_many :tags
  has_many :comments

タグはこちら:

class Tag < ActiveRecord::Base
  attr_accessible :subject, :post_ids
  has_and_belongs_to_many :posts

  validates(:subject, presence: true, :length => { minimum: 3, maximum: 15})
end

投稿を作成するとき、投稿のタイトルと本文と同じ形式で、ユーザーが作成時に投稿にタグを追加できるようにする必要があります。タグは事前に作成されており、投稿内で作成されることはありません。これを行う方法がわかりません。Post のフィールドに簡単に入力できるように form_for を使用したいのですが、これにタグを組み込んでコントローラーに送信する方法がわかりません。助言がありますか?コントローラーがビューに送信しているものは次のとおりです。

@post = Post.new
@tags = Tag.all
4

1 に答える 1

0

ユーザーがフォームにタグを入力するためのフィールドが必要です。

<input type="text" id="tags" name="tags" />

リクエストがコントローラーにポストされると、タグのテキストを解析し、

tags = params["tags"].split(/\s+/) //assuming tags are separated by spaces
tags.each do |t|
  tag = Tag.find_or_create_by_name(t)
  your_post_object.tags << tag
end

saveそして最後に、電話することを忘れないでくださいyour_post_object

于 2013-06-15T03:53:10.490 に答える