在组合框导航中将javascript变量传递给Ruby

时间:2010-08-18 20:20:59

标签: ruby-on-rails select combobox navigation

更新了示例

我使用选择框作为导航。当我选择一个项目时,我希望被重定向到该页面。

= select (@organization, "tabs", @organization.tabs.collect { |t| t.title }, {} { :onchange => "escape_javascript(#{ render edit_organization_tab_path(@organization, this.value)})"} )

所以这个例子不起作用,因为我不确定如何将Javascript变量传递给Ruby

是否可以在Ruby中完全执行此操作?或者我必须使用jQuery吗?

3 个答案:

答案 0 :(得分:1)

如果您正在使用jQuery,可以使用以下内容执行此操作:

= select(@organization, "tabs", @organization.tabs.collect { |t| [ t.title, edit_organization_tab_url(t) ] }, { }, :onchange => "window.location.href=$(this).val()")

选择列表中每个项目的值应该是您要将此人重定向到的URL。

我不确定你在JavaScript块中放置一个Rails渲染调用是什么意思。

答案 1 :(得分:1)

如果用户没有启用JavaScript,您是否考虑过这可能会降级?理想情况下,链接元素仍然可以作为常规<a/>元素使用,因此用户仍然可以访问没有JS的页面。特别是因为您的选择框控制网站导航,我建议使用“渐进增强”解决方案并首先编写标记而不使用JS,然后在其上添加JS行为。您可能需要一些类似于选择框的CSS和<div/>元素但不是字面上的选择框,这样您就可以更好地控制内容。正如tadman指出的那样,在JavaScript中重定向用户的其他一些事情归结为设置window.location。如果您使用的是jQuery,请检查可以附加到组合框中选择事件的change event,并根据需要重定向用户。最后,使用CSS3 border-radius和其他属性,您可以创建看起来非常类似于选择框的东西,但具有更多功能。你也可以找到这样的组件,谷歌搜索turned up this example

答案 2 :(得分:0)

你不需要jQuery,但你需要Javascript。最终,您将需要使用(并可能创建)帮助程序,该帮助程序将创建导航就绪选择框(包括必要的Javascript代码)或直接在视图中添加事件侦听器(内联或包含的脚本)