0

我有一个页面将显示已上传到我的网站的媒体。将有 3 个复选框,每种媒体类型一个,复选框是图像、目录图像和视频。选中一个后,我希望页面重新加载同一页面,但将复选框添加到参数中,以便显示选中的媒体。

我一直试图用 javascript 来做这件事,但没有成功。我希望rails有一个内置的功能或者可以帮助我的东西。如果有人没有击败我,我将继续研究并更新这个问题。

编辑:我有一个代码请求,我不想仅仅因为它已经在生产中并且周围有很多垃圾,但我会尝试清理它并给出我在做什么的想法

<div class="panel">
    <h3>Create from Media</h3>
    <div>
        Image: <%= check_box_tag 'Catalog Image', :catalog_images %> | Images: <%= check_box_tag 'Images', :images %> | Video: <%= check_box_tag 'Videos', :videos %>
        <br />
        <% if @filenames %>
            <table class='list'>
                    <th>Lots</th>
                    <th>Sub Lot Creation</th>
           <% if :videos %>
              <% @videos.reject(&:blank?).uniq.each do |filename| %>
                    <% basename = File.basename(filename, '.*') %>

                    <tr>
                        <td><%= basename %></td>
                        <td><%= text_field_tag :low_range %> <%= text_field_tag :high_range %></td>
                    </tr>

            <% end %>
          <% end %>
   </table>
        <% end %>
        <%= link_to "Create by Image", mass_create_from_media_admin_event_lots_path(@event, :images => true) %>
    </div>
</div>

因此,当每个复选框都被标记时,我想重新加载并拥有 :videos, :catalog_images, :images 如果选中则为 true。我知道每种媒体的验证都不完整,但我也在家里,所以我试图快速创建我想要的表示

4

1 回答 1

0

如果我理解正确,您想重新加载页面并将 ?videos=checked 之类的内容附加到您的网址?

如果是这种情况,您可以执行以下操作(我想您使用的是 jQuery,但将其重写为咖啡脚本应该没有任何问题):

$('input:checkbox').change(function () {
    var currentUrl = window.location.href;
    // your media type
    var mediaType = $(this).val();
    // set to true if checkbox has been checked, false otherwise
    var isChecked = ($(this).attr('checked')) == 'checked' ? true : false;

    if (isChecked == true) {
        // in case you already have some other params in your url
        if (currentUrl.indexOf('?') !== -1){
           currentUrl += '&' + mediaType ' + '=true';
        } else{
           currentUrl += '?' + mediaType ' + '=true';
        }
    }

    window.location.href = currentUrl;
});

我没有运行代码,您需要解决一些其他用例(例如,当用户取消选中复选框时会发生什么?)

无论如何,这个解决方案有点混乱。我建议您使用带有提交按钮的普通表单或异步调用,并且只更改您需要的页面部分。

于 2013-05-21T20:21:31.810 回答