选中复选框后,使用Rails更改参数

时间:2013-05-21 19:35:15

标签: ruby-on-rails

我有一个页面,会显示已上传到我网站的媒体。将有3个复选框,每种类型的媒体一个,复选框是图像,catalog_images和视频。一旦选中一个,我希望页面重新加载相同的页面,但将复选框添加到要检查的参数,因此它将显示已检查的媒体。

我一直试图用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,:如果选中,则图像为true。我知道每个媒体的验证都不完整,但我也在家,所以我试图快速创建我想要的表示

1 个答案:

答案 0 :(得分:0)

如果我理解正确,您想重新加载页面并附加类似于“videos = check”的内容?

如果是这种情况,你可以做这样的事情(我想你正在使用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;
});

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

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