私はPostモデルとTagモデルを持っています(後で:name
という属性があります)。 Postモデルは、私が rails3-jquery-autocompleteプラグインを動作させるために添加:tag_name
と呼ばれるattr_accessor
がありますこのf.autocomplete_fieldとこのタグモデルを連携させることはできますか?
post.rb:
class Post < ActiveRecord::Base
attr_accessible :title, :content, :tag_name
has_and_belongs_to_many :tags
def tag!(tags)
tags = tags.split(" ").map do |tag|
Tag.find_or_create_by_name(tag)
end
self.tags << tags
end
end
がtag.rb:
class Tag < ActiveRecord::Base
has_and_belongs_to_many :posts
end
posts_controller.rb:自動補完上記のコードでは_form.html.erb
<%= f.autocomplete_field :tag_name, autocomplete_tag_name_posts_path, :"data-delimiter" => ' ' %>
def create
@user = current_user
@post = @user.posts.new(params[:post])
if @post.save
redirect_to @post, notice: 'post was successfully created.'
else
render action: "new"
end
@post.tag!(params[:tags])
end
が働いているが、私はフォームを送信するとき、私はこのエラーが出る:未定義のメソッドが `nilのために「スプリット: NilClass。
f.autocomplete_field
とどうすればよいか分かりません。それはこのように完全に提出するために使用する前に:
<%= text_field_tag :tags, params[:tags] %>
を(私はthisチュートリアルからこれを取った)
今、私は、フォームが正常に再提出するようにする方法を知っていると投稿用のタグを作成しないでください。ポストモデルのタグで何を修正すればいいのか分かりません!方法およびコントローラは、アクションを作成します。
提案がありますか? create
アクション、ラインで
おかげで多くのことを動作するはずです!私はいつもこのような属性を置くことが何を意味するのか疑問に思っていました: 'params [:first_attribute] [:second_attribute]'それは何ですか(申し訳ありません、私は初心者です)? – alexchenco
アレックスにようこそ。railsコントローラ内には、フォームまたはurlを介して送信されたパラメータを含む 'params'ハッシュがあります。フォームでは、入力要素の 'name'属性がparamsハッシュのキーを構成し、入力されたデータは対応する値になります。パラメータがURLで渡された場合(?x = 23を使用)、それらもparamsハッシュの一部になります。 – abhishek