2011-08-30 4 views
0

Я использую act-as-taggable-on. Я пробовал несколько подходов, но никто из них не работает.Как сделать так, чтобы сообщения помечены флажками?

На взгляд:

<%= check_box("post", "add_politics", {:class=> "post"}) %> 
<%= f.label :politics %> 

<%= check_box("post", "add_tech") %> 
<%= f.label :tech, 'Technology' %> 

<%= f.check_box :entertainment %> 
<%= f.label :entertainment %> 

<%= f.check_box :sports %> 
<%= f.label :sports %> 

<%= f.check_box :science %> 
<%= f.label :science %> 
    <%= f.submit %> 

В модели:

def add_politics; self.tag_list.add('politics'); end 
    def add_tech; self.tag_list << 'tech'; end 
    def add_entertainment; self.tag_list << 'entertainment'; end 
    def add_sports; self.tag_list << 'sports'; end 
    def add_science; self.tag_list << 'science'; end 
    def add_crime; self.tag_list << 'crime'; end 
    def add_business; self.tag_list << 'business'; end 
    def add_social; self.tag_list << 'social'; end 
    def add_nature; self.tag_list << 'nature'; end 
    def add_other; self.tag_list << 'other'; end 

В контроллере:

@post.tag_list << 'politics' if params[:post][:politics] 
@post.tag_list << 'tech' if params[:post][:tech] 
@post.tag_list << 'entertainment' if params[:post][:entertainment] 
@post.tag_list << 'sports' if params[:post][:sports] 
@post.tag_list << 'science' if params[:post][:science] 
@post.tag_list << 'crime' if params[:post][:crime] 
@post.tag_list << 'business' if params[:post][:business] 
@post.tag_list << 'social' if params[:post][:social] 
@post.tag_list << 'nature' if params[:post][:nature] 
@post.tag_list << 'other' if params[:post][:other] 

Что в конечном итоге происходит, что только развлечение, спорт, наука. ... другие отображаются, потому что те, которые имеют формат <% = f.check_box: tag%>. Но снятие или проверка их не имеет значения - те типы тегов всегда будут отображаться. Что, черт возьми, происходит?

+0

не ваши руки больно от вводить тот же код снова и снова? попробуйте реорганизовать его немного –

ответ

0

Я установил его. Вот как:

<%= check_box_tag 'tags[]', 'politics' %> 
<%= f.label :politics %> 

    <%= check_box_tag 'tags[]', 'tech' %> 
<%= f.label :tech, 'Technology' %> 

<%= check_box_tag 'tags[]', 'entertainment' %> 
<%= f.label :entertainment %> 

<%= check_box_tag 'tags[]', 'sports' %> 
<%= f.label :sports %> 

<%= check_box_tag 'tags[]', 'science' %> 
<%= f.label :science %> 

<%= check_box_tag 'tags[]', 'crime' %> 
<%= f.label :crime %> 

<%= check_box_tag 'tags[]', 'business' %> 
<%= f.label :business %> 

<%= check_box_tag 'tags[]', 'social' %> 
<%= f.label :social %> 

<%= check_box_tag 'tags[]', 'nature' %> 
<%= f.label :nature %> 

<%= check_box_tag 'tags[]', 'other' %> 
<%= f.label :other %> 

В контроллере:

@post.tag_list = params[:tags] 
+0

вид может использовать некоторые рефакторинг. он может быть переписан на 3 строки –

Смежные вопросы