【问题标题】:How to handle the event when the selected item changes in an HTML select当 HTML 选择中的选定项目发生变化时如何处理事件
【发布时间】:2011-01-03 19:14:21
【问题描述】:

我目前有两个 Ruby 选择:一个用于类别,另一个用于子类别。如您所料,第二个必须在第一个更改时自行更新。

例如,如果我从第一个类别中选择“运动”类别,则第二个选择应该加载所有运动。

如何处理“索引更改”事件?是否有“红宝石方式”或者我必须使用 javascript?

谢谢, 布赖恩

【问题讨论】:

    标签: javascript html ruby-on-rails ruby select


    【解决方案1】:

    您必须至少使用一些 JavaScript。在 jQuery 中,您可以这样做:

    $(document).ready(function(){
        $('#first-select').change(function(){
              $('#second-select').load('/categories/2');
        });
    });
    

    在您的 CategoriesController 中,您的显示操作应该响应 format.js,它应该呈现一个子类别部分:

    class CategoriesController
    ...
    def show
      @subcats = SubCategory.find_all_by_parent_category(params[:id])
      ...
      respond_to |format|
        ...
        format.js { render :partial => "subcategories", :locals => { :subcats => @subcats } }
      end
    end
    

    和您的子类别部分:

    <% subcats.each do |subcat| %>
    <option value="<%= subcat.value %>"><%= subcat.text %></option>
    <% end %>
    

    【讨论】:

    • 问题:我在创建公告时这样做,所以..我应该将控制器代码放在 Show 处还是 New 方法处?
    • 您希望在您的类别的 show 方法中使用它,因为您正在获取与您的类别之一相关的数据(而不是创建一个新类别)。
    • 对。但我没有类别实体。我只有数据库中的类别表。我现在不需要控制器或模型。所以,我会看看我可以在哪里放置登录名。非常感谢。
    猜你喜欢
    • 2023-04-03
    • 1970-01-01
    • 2017-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-01
    • 2011-07-17
    • 1970-01-01
    相关资源
    最近更新 更多