2014-12-25 6 views
8

Próbuję uzyskać pole tekstowe w mojej formie częściowe do przecinkowych znaczników acts_as_taggable_on. Teraz, po ponownym załadowaniu strony, przecinki znikają, więc jeśli pole ma dwa lub więcej tagów, stają się one zamiast tego jednym dużym znacznikiem. Na przykład otrzymuję "Tag1 Tag2 Tag3" zamiast "Tag1, Tag2, Tag3". Używam actions-as-taggable-on 3.4.2.Szyny 4: pole tekstowe dla acts_as_taggable_on nie oddzielające znaczników przecinkiem

Oto moja _form.html.erb częściowy:

<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 %> 

Za każdym razem przeładować stronę edycji, wartość wejściowa jakoś usuwa przecinków od już obecnych tagów, więc wygląda pole tekstowe tak:

<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"> 

zamiast mieć value="China, U.S.A.", jak być powinno.

Oto mój model, article.rb:

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

Każda pomoc będzie mile widziane :)

Dzięki!

+0

dodać wielokrotność: wierny field_tag ​​ – pkrawat1

+0

nie robi różnica, tagi wciąż nie są domyślnie rozdzielane przecinkami w polu tekstowym po przejściu do strony edycji :( – DaniG2k

Odpowiedz

9

Podobno jest to new security feature.

I rozwiązać problem separacji przecinkami wykonując:

<% @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

Dzięki! Ponieważ używam ActiveAdmin z Formtastic, wprowadziłem niestandardowe dane wejściowe.

Więc stworzył nową klasę: app/Wejścia/tag_list_input.rb z:

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

i za pomocą tego jak:

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