Ich habe ein Firmenmodell, das viele Tags haben kann. Es funktioniert gut, aber in einem Fall funktioniert es nicht. Der Anlass ist, wenn die Validierung des Unternehmensmodells fehlschlägt. Nach: render => 'edit' zeigt es keine Tags in der Ansicht an. Ich vermute, dass das Daten-Pre die Daten nicht korrekt aufnimmt. Ich möchte auch, dass Tags beim Lösen von Validierungen erhalten bleiben.Ruby on Rails - JS-Eingabe-Token, ein Problem, wenn die Validierung fehlschlägt
Ich habe diese Idee von hier: http://railscasts.com/episodes/167-more-on-virtual-attributes
I Eingang Token Steuerung verwenden: http://loopj.com/jquery-tokeninput/
Dies ist, was ich in Gesellschaft Modell haben die tag_tokens zu:
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
Hier ist der Code aus der Sicht:
<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, so sehe ich, was ist das Problem mit dem obigen Code.
Wenn ich bearbeiten Seite Daten-Pre enthält dies: data-pre="[{"id":1704,"name":"dump truck"}]"
. Wenn ich das Formular mit Validierungsfehler übergebe, enthält das Daten-Pre: data-pre="1704"
.
wenn ich ändern Sie den Code dazu:
def tag_tokens
tags.to_json(:only => [:id, :name])
end
neue Tags, die noch nicht an das Unternehmensmodell speichern wurden, werden entfernt, da sie von der DB jedes Mal gelesen werden. Wie kann ich die eingegebenen Daten zwischen Formularübergängen speichern?
kann jemand helfen? – MJM