У меня есть модель Post и модель Tag (последняя имеет атрибут с именем :name
).
Модель Post имеет attr_accessor
с именем :tag_name
, который я добавил для
rails3-jquery-autocomplete Работа плагина:
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:
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
_form.html.erb
<%= f.autocomplete_field :tag_name, autocomplete_tag_name_posts_path, :"data-delimiter" => ' ' %>
С кодом выше автозаполнение работает, но когда я отправляю форму, я получаю эту ошибку: неопределенный метод `split 'для nil: NilClass.
Я не уверен, что делать с f.autocomplete_field
. Перед тем как раньше подавать идеально так:
<%= text_field_tag :tags, params[:tags] %>
(я взял это из этого учебника)
Теперь я не знаю, как снова успешно отправить форму и создать теги для сообщений. Я тоже не знаю, что мне следует изменить в теге пост-модели! метод и действие контроллера create .
Есть предложения?