Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/53.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将集合和选择菜单选项链接到过滤器方法-RubyonRails_Javascript_Ruby On Rails_Ruby - Fatal编程技术网

Javascript 将集合和选择菜单选项链接到过滤器方法-RubyonRails

Javascript 将集合和选择菜单选项链接到过滤器方法-RubyonRails,javascript,ruby-on-rails,ruby,Javascript,Ruby On Rails,Ruby,因此,目前在我的索引中,我有一些集合选择菜单,在数据库中搜索该字段的现有值,然后在下拉菜单中列出它们,如下所示 <%= collection_select :ansible_job, :status, AnsibleJob.select(:status).uniq.order('status ASC'), :status, :status, {:prompt => 'Status'},{:name => "status_search"} %> <%= collect

因此,目前在我的索引中,我有一些集合选择菜单,在数据库中搜索该字段的现有值,然后在下拉菜单中列出它们,如下所示

<%= collection_select :ansible_job, :status, AnsibleJob.select(:status).uniq.order('status ASC'), :status, :status, {:prompt => 'Status'},{:name => "status_search"} %>
<%= collection_select :ansible_job, :environment, AnsibleJob.select(:environment).uniq.order('environment ASC'), :environment, :environment, {:prompt => 'Environment'},{:name => "environment_search"} %>
<%= collection_select :ansible_job, :playbook, AnsibleJob.select(:playbook).uniq.order('playbook ASC'), :playbook, :playbook, {:prompt => 'Playbook'},{:name => "playbook_search"} %>
这样我就可以通过发布URL来手动过滤我的数据库

http://localhost:3000/?status=COMPLETED
现在我想做的是,当用户从下拉菜单中选择一个值时,该值将调用我的筛选方法并链接到一个搜索URL,并将所选值附加到末尾,以便根据该选择筛选数据库。一般来说,我对Rails和web开发非常陌生,那么如何做才是最好的方法呢


谢谢

让我看看我是否正确理解您,您希望select上的更改触发页面中的更改,以显示指向特定URL的链接

这可以通过javascript监听select的“onChange”事件来完成,例如:

function updateURL(sel) {
    var link = document.getElementById("url");
    var value = sel.options[sel.selectedIndex].text;
    var href = "?status=" + sel.options[sel.selectedIndex].text;

    link.innerHTML = "Filter by STATUS: " + value;
    link.href = href;
}
(这应该改进很多,但可以解释这一点)

function updateURL(sel) {
    var link = document.getElementById("url");
    var value = sel.options[sel.selectedIndex].text;
    var href = "?status=" + sel.options[sel.selectedIndex].text;

    link.innerHTML = "Filter by STATUS: " + value;
    link.href = href;
}