首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用collection_select和javascript重定向Rails

用collection_select和javascript重定向Rails
EN

Stack Overflow用户
提问于 2013-07-23 18:46:04
回答 2查看 1K关注 0票数 1

我有一个collection_select,当单击发生时,它会触发一些JS来在我的URL中设置一个id。这是密码。

application.js

代码语言:javascript
运行
复制
$(document).ready(function(){
    $("#org_id").on("change", function(){
      val = $(this).val();
      window.location = '/sessions?org_id='+ val;
    });
});

视图

代码语言:javascript
运行
复制
<div id="org-select">
  <%= collection_select :org, :id, Org.all, :id, :name %>
</div>

呈现html

代码语言:javascript
运行
复制
<div id="org-select">
  <select id="org_id" name="org[id]"><option value="1">bustas</option>
<option value="2">wintas</option></select>

所有这些都是给我一个像/sessions?org_id=2这样的url。

我遇到的问题是,页面中的复选框默认为第一个组织,当用户更改select中的选项时,页面会触发/刷新,但是页面默认为第一个组织,因此URL中的id不会更改。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-07-23 19:16:58

嗯,collection_select确实有一个设置默认值的选项。正如您在最后一个用户提供的示例中所看到的那样:

select

您可以做的是将选定的值设置为从url获得的参数,如下所示:

代码语言:javascript
运行
复制
<%= collection_select :org, :id, Org.all, :id, :name, {:selected => params[:org_id]} %>

url的?org_id=2部分在内部被翻译成params[:org_id],所以您可以像上面的例子一样使用它。

试试看它是否有效。

票数 0
EN

Stack Overflow用户

发布于 2013-07-23 20:10:58

尝试使用options_for_select。并给出选定区域的参数值。您的代码将类似于:

Rails:

代码语言:javascript
运行
复制
<%= select_tag "org_id", options_for_select(Org.all.collect{ |o| [o.name, o.id] }, {:selected => "#{params[:org_id] if params[:org_id].present?}"}), {} %>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17818516

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档