2011-04-25 110 views

回答

4

我用下面的驗證在我的崗位模型

class Post < ActiveRecord::Base 
    ... 
    acts_as_taggable_on :categories 
    ... 
    validates_presence_of :category_list, 
         :message => "Choose at least 1 category" 
    validates_size_of  :category_list, 
         :maximum => 4, 
         :message => '4 categories maximum' 
    ... 
end 

正如瑞安貝特的教程看出:

class PostssController < ApplicationController 
    .. 
    def update 
    @post = current_user.posts.find(params[:id]) 
    params[:post][:category_list] ||= [] 
    end 
    .. 
end 

分類選擇部分:

<% Category.roots.each do |c| %> 
     <ul> 
      <li> 
      <%= check_box_tag "post[category_list][]", 
           c.id, @post.category_list.include?(c.id.to_s)%> 
      <%= c.name %> 
      </li> 
     </ul> 
<% end %> 

順便說一句,我用catgeory_list作爲一個類別ID的數組,所以Post category_list可能如下所示:

> p = Post.first 
... 
> p.category_list 
["10", "7", "8"] 
> p.category_list.map { |c| Category.find(c.to_i).name } 
["Cats","Dogs","Plants"] 

希望它可以幫助

+1

我使用Rails的2.3,我跟着瑞恩貝特對HABTM複選框截屏:http://railscasts.com/episodes/17-habtm-checkboxes – 2011-04-26 17:16:10

+0

感謝 - 將這項工作在Rails 3中? – Angela 2011-04-26 18:49:47

+0

嗨,我測試了這個,它看起來像限制字符的數量,而不是標籤的數量...... – Angela 2011-04-29 15:07:44