私は多くのタグを持つことができる会社のモデルを持っています。それは正常に動作しますが、1つの機会にそれは動作しません。この機会は、企業モデルの検証に失敗したときです。後:render => 'edit'は、ビュー内のタグを表示しません。データpreがデータを正しく取得していないと思われます。バリデーションを解決する際にタグを保存することも欲しいと思います。Ruby on Rails - JS入力トークン、検証に失敗したときの問題
私はここからこのアイデアを得た: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
コードですビューから:
<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>
ED IT:
OKですが、私は上記のコードに問題があるのを見ています。
ページ編集データを読み込むときには、 - data-pre="[{"id":1704,"name":"dump truck"}]"
が含まれています。検証エラーのあるフォームを送信すると、data-preにはdata-pre="1704"
が含まれます。
が、私はこれにコードを変更した場合:まだ会社のモデルに保存されていなかった
def tag_tokens
tags.to_json(:only => [:id, :name])
end
新しいタグを除去して、それらはDB毎回から読み込まれるため。フォーム遷移間に入力したデータを保存するにはどうすればよいですか?
誰でも助けますか? – MJM