这个问题我相信它并不难,但作为新的轨道我有点迷路了。看完Railscasts第52集后,我继续制作我自己的发布/取消发布幻灯片列表。
这是form view
= form_tag publish_admin_category_slides_path(@cat4), :method => "put" do
#pricing
%table#plans
%thead
%tr
%th Image
%th Published
%tbody
- @image.each do |im|
%tr.odd
%td
= image_tag im.avatar.url(:thumb)
= link_to "Delete", admin_category_slide_path(@cat4,im), :method => "delete"
%span is
%th
= check_box_tag "slide_published[]", im.published ,im.published
带有控制器动作#publish
def publish
Slide.update_all(:published => params[:slide_published])
redirect_to :action => "index"
end
这样写的正确方法是什么?一个列表与复选框,改变一个属性和多个更新布尔状态?
我发现了一些类似的东西。我把它贴出来,以防有人有类似的问题
def publish
@cat = Category.find(params[:category_id])
if params[:slide_published]
checked_slides = Slide.find(params[:slide_published])
end
unless checked_slides.blank?
@cat.slides.all.each do |slide|
if checked_slides.include?(slide)
slide.update_attribute :published, true unless slide.published?
else
slide.update_attribute :published, false unless !slide.published?
end
end
end
if checked_slides.blank?
@cat.slides.all.each do |slide|
slide.update_attribute :published, false unless !slide.published?
end
end