【问题标题】:rails 3 find a value in a params arrayrails 3 在 params 数组中找到一个值
【发布时间】:2013-05-09 07:08:15
【问题描述】:

我正在使用 jQuery UI Sortable 对我网站上的一些行进行排序。

这是我的看法:

<section class="data-list">
    <article id="item_<%= item.id %>" class="data sortable">
        <!-- stuff goes here -->
    </article>
</section>

这是我的 JS:

$('.data-list').sortable({items: '> .data'}).bind('sortupdate', function() {
    var release = getUrlVars()["id"];
    $.ajax({
        type: 'POST',
        data: $(this).sortable("serialize"),
        url: '/release_items/'+ release +'/prioritize'
    });
});

这将创建一个如下所示的params['item'] 数组:

["1537", "1536", "1540", "1541", "1542", "1543", "1544", "1545", "1547", "1546"]

这是我的控制器代码:

def prioritize
    @release = Release.find(params[:id])
    item = @release.release_items
    item.each do |i|
        i.priority = params['item'].index(i.id.to_s).to_i + 1
        i.save
    end
end

我的问题是我有几个release_itemsitem_type 列区分。就目前而言,我目前在控制器中没有一个好的方法来在我的@release = Release.find(params[:id]) 行中按 item_type 进行过滤。

我想做的是确保在item.each do |i| 循环中,仅当项目位于params['item'] 数组中时才设置优先级。我该怎么做?如果这还不够清楚,请告诉我。谢谢!

编辑 1:

对于每个版本,都有 n 个版本项。这些发布项目由它们的item_type 列(例如,常规、项目、数据、补丁)分隔以显示在站点上。所以在网站上有 4 个不同的项目列表,我希望能够单独对这 4 个列表进行排序。就像我上面所说的,传递给控制器​​中prioritize 操作的params['item'] 数组只有需要排序的项目,这是我想要的。

我遇到的问题是prioritize 操作中的前两行将获取所有发布项,而不仅仅是params['item'] 数组中的那些。数组中的值为需要排序的发布项的ID。我不想获取所有发布项目,而是只想获取 params['item'] 数组中的项目。我也有一个 ReleaseItem 模型,我可以从中选择。所以,我正在尝试这样做:(我知道这不是正确的代码,只是为了清楚起见)

item = ReleaseItem.find(conditions: "id in params['item']")

这是否更有意义?感谢您的帮助!

【问题讨论】:

    标签: arrays ruby-on-rails-3 serialization jquery-ui-sortable


    【解决方案1】:

    我想我明白你想要做什么......

    def prioritize
        @release = Release.find(params[:id])
        items = @release.release_items.where("id IN (?)", params['item'])
        items.each_with_index do |item, index|        
            item.priority = index + 1
            item.save
        end
    end
    

    【讨论】:

    • 我更新了我的答案以包含您更新中的信息。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多