编辑时(Rails)字段的值会消失吗?

时间:2012-02-28 03:57:18

标签: ruby-on-rails-3

这是处理两个模型的表单: Post Tag 彼此之间有has_and_belongs_to_many个关联。 Tag模型有一个名为:name的属性,Post模型有一个名为:tag_name的attr_accessor(以便自动完成可以工作):

<%= 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 gem 的字段会存储我输入的值。但是,当我单击编辑时,该字段为空,但奇怪的是我可以输入更多文本并单击更新:

<%= f.autocomplete_field :tag_name, autocomplete_tag_name_posts_path, :"data-delimiter" => ' ' %>

有任何建议可以解决这个问题吗?

0 个答案:

没有答案