小编MJM*_*MJM的帖子

Ruby on Rails - JS输入令牌,验证失败时的问题

我有一个可以有很多标签的公司模型.它工作正常,但有一次它不起作用.公司模型验证失败的时机.之后:render =>'edit'它不会在视图中显示标签.我怀疑data-pre没有正确地获取数据.我还希望在解决验证时保留标记.

我从这里得到了这个想法:http://railscasts.com/episodes/167-more-on-virtual-attributes

我使用输入令牌控件:http://loopj.com/jquery-tokeninput/

这就是我在公司模型中关于tag_tokens的内容:

  before_save :save_tag_tokens
  attr_writer :tag_tokens
  attr_accessible :tag_tokens

  def tag_tokens
    @tag_tokens || tags.to_json(:only => [:id, :name])
  end

  def save_tag_tokens
    if @tag_tokens
      @tag_tokens.gsub!(/CREATE_(.+?)_END/) do
        Tag.create!(:name => $1.strip.downcase).id
      end
      self.tag_ids = @tag_tokens.split(",")
    end
  end
Run Code Online (Sandbox Code Playgroud)

以下是视图中的代码:

  <div class="input text no-border">
    <% Tag.include_root_in_json = false %>
    <%= company_form.label :tag_tokens, t('form.account.company.edit.company_tags_html')%>
    <%= company_form.text_field :tag_tokens, :id => 'company_tag_tokens', "data-pre" => @company.tag_tokens%>
    <p class="tip"><%= t('form.account.company.edit.tag_tip') %></p>
  </div>
Run Code Online (Sandbox Code Playgroud)

编辑:

好的,所以我看到上面的代码有什么问题.

当我加载编辑页面数据预包含此:data-pre="[{&quot;id&quot;:1704,&quot;name&quot;:&quot;dump truck&quot;}]".当我提交带有验证错误的表单时,data-pre包含:data-pre="1704".

如果我将代码更改为:

def tag_tokens …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails validationerror jquery-tokeninput

5
推荐指数
1
解决办法
542
查看次数