Rails - 选择多个页面元素并对它们执行操作

时间:2014-03-21 11:20:03

标签: ruby-on-rails

我正在使用Rails中的简单照片库应用。 我有一个显示缩略图的视图,我每个都有单独的按钮(删除或将照片移动到不同的相册。

我想要的是有可能选择一堆并对所有选中的人使用动作。

勾选框就足够了,但最好是我可以通过按住Ctrl键单击,按住Shift键单击或用鼠标创建squere来选择它们。另一种方法是首先按下操作按钮,然后单击缩略图并确认。

我或多或少知道如何从头开始制作这类东西(使用HTML,JS,jquery和PHP),但是没有必要再次发明轮子,花费大量时间去做最糟糕的是,那个已经可用..

有没有宝石来实现这一目标?或者至少是一些有用的辅助函数(比如form_for)?

1 个答案:

答案 0 :(得分:0)

我们之前已经这样做了。这是我们所做的(我们使用inherited_resources):

#config/routes.rb
resources :controller do
   delete 'destroy(/:id)', action: 'destroy', as: 'multi_destroy'
end

#app/controllers/your_controller.rb
def destroy
    id = params[:id] 

    #Multi
    if id.kind_of?(Array)
        ids = Model.where(:id => id.split(','))
        ids.destroy_all if ids.exists?

        respond_to do |format|
            format.json { render json: "success".to_json }
            format.html { redirect_to collection_path }
        end

    else
        destroy! { collection_path }
    end

end


#app/views/images/index.html.erb
<div class="images">
    <% collection.each do |image| %>

            <!-- Image -->
            <div class="image" id="<%= image.id %>">
                <%= check_box_tag "id[]", image.id, false, class: "multi-delete" %>
            </div>

    <% end %>

    <%= button_to "Remove Selected", multi_destroy_images_path, method: :delete, id: "multi-delete", data: { confirm: "Are You Sure?" } %>
</div>