Это форма, которая обрабатывает две модели: Post и Tag обе имеют has_and_belongs_to_many
связь друг с другом. Модель тега имеет атрибут с именем :name
, а модель Post имеет атрибут attr_accessor с именем :tag_name
(чтобы могло работать автозаполнение):
<%= form_for(@post) do |f| %>
<%= render 'shared/error_messages' %>
<div class="field">
<%= f.label :title %><br />
<%= f.text_field :title %>
</div>
<div class="field">
<%= f.label :content %><br />
<%= f.cktext_area :content %>
</div>
<div class="field">
<%= f.label :tag_name %>
<%= f.autocomplete_field :tag_name, autocomplete_tag_name_posts_path, :"data-delimiter" => ' ' %>
</div>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
Почтовая модель:
class Post < ActiveRecord::Base
attr_accessible :title, :content, :tag_name
attr_accessor :tag_name
def tag!(tags)
tags = tags.split(" ").map do |tag|
Tag.find_or_create_by_name(tag)
end
self.tags << tags
end
end
пост-контроллер:
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[:post][:tag_name])
end
def edit
@post = Post.find(params[:id])
end
def update
@post = Post.find(params[:id])
@post.update_attributes(params[:post])
@post.tag!(params[:post][:tag_name])
redirect_to @post
end
В этом поле, в котором используется гем rails3-jquery-autocomplete , сохраняются введенные мной значения. Но когда я нажимаю «Изменить», поле остается пустым, но странно то, что я могу ввести больше текста и нажать «Обновить»:
<%= f.autocomplete_field :tag_name, autocomplete_tag_name_posts_path, :"data-delimiter" => ' ' %>
Есть предложения, чтобы это исправить?