2014-12-25 7 views
8

Sto cercando di ottenere il campo di testo nel mio modulo parziale in tag separati da virgola act_as_taggable_on. In questo momento, quando ricarico la pagina, le virgole spariscono, quindi se un campo ha due o più tag, diventano invece un unico tag. Ad esempio, ricevo "Tag1 Tag2 Tag3" invece di "Tag1, Tag2, Tag3". Sto usando act-as-taggable-on 3.4.2.Rails 4: text_field per act_as_taggable_on non separa i tag con una virgola

Ecco il mio _form.html.erb parziale:

<h2>Tags:</h2> 
<p>Please separate the tags with a comma ','</p> 

<% @article.tag_types.each do |tag| %> 
    <div class="form-group"> 
    <strong><%= label_tag tag.to_s.titleize %></strong><br /> 
    <%= f.text_field "#{tag.to_s.singularize}_list".to_sym, :placeholder => "Comma-separated list of #{tag.to_s}", class: 'form-control' %> 
    </div> 
<% end %> 

Ogni volta che ricarichiamo la pagina di modifica, il valore di ingresso rimuove in qualche modo le virgole dai già presenti tag, quindi gli sguardi dei campi di testo in questo modo:

<input id="article_country_list" class="form-control" type="text" name="article[country_list]" value="China U.S.A." placeholder="Comma-separated list of countries"> 

invece di avere value="China, U.S.A." come dovrebbe essere.

Ecco il mio modello, article.rb:

class Article < ActiveRecord::Base 
    acts_as_taggable_on :people, :cities, :countries, :other 
end 

Qualsiasi aiuto sarebbe molto apprezzato :)

Grazie!

+0

aggiungere più: fedele alla field_tag ​​ – pkrawat1

+0

Non fare una differenza, i tag non sono ancora separati da virgola per impostazione predefinita in text_field quando vado alla pagina di modifica :( – DaniG2k

risposta

9

Apparentemente questo è un new security feature.

ho risolto il problema di separazione virgola facendo:

<% @article.tag_types.each do |tag| %> 
<div class="form-group"> 
    <strong><%= f.label tag.to_s.titleize %></strong><br /> 
    <% tag_sym = "#{tag.to_s.singularize}_list".to_sym %> 
    <% tag_list = "#{tag.to_s.singularize}_list" %> 
    <%= f.text_field tag_sym, value: @article.send(tag_list).to_s, :placeholder => "Comma-separated list of #{tag.to_s}", class: 'form-control' %> 
</div> 
<% end %> 
4

Grazie! Dal momento che sto usando ActiveAdmin con Formtastic ho fatto un input personalizzato.

così ho creato una nuova classe: app/ingressi/tag_list_input.rb con:

class TagListInput < Formtastic::Inputs::StringInput 
    def input_html_options 
    super.merge(:value => "#{@object.send(method).to_s.html_safe}") 
    end 
end 

e l'utilizzo di questo tipo:

f.input :some_tag_list, :as => :tag_list, :label => "SomeTags" 
Problemi correlati