我在rails code上有这个ruby
<%= builder.select(:serving_size_id, '') %>
我没有故意指定任何选项,因为我在页面加载时使用不同的方式设置选项(使用jQuery和Ajax)。
问题:我有什么方法可以从“serving_size_id”列中获取值但不更改该行?我有一部分用于新的和编辑,我认为如果我可以在JS中设置所选索引,那将是很好的。
有什么想法吗?
答案 0 :(得分:0)
我不确定我是否完全理解您的问题,但如果您想使用JavaScript设置选择字段的值,则需要在某些时候获取JavaScript 中的值。我可以想到两种方法:
1)当您通过AJAX获得选项时,请让服务器指出选择了哪一个。这可以通过返回HTML <option>
标记并为其中一个设置selected="selected"
来完成。为此,您的AJAX请求将必须提供有关此选择字段所针对的对象的信息(因此服务器可以查找对象的当前serving_size_id
值)。
2)当您在原始部分中渲染字段时,还会渲染一些JavaScript来设置字段的当前值,例如,在上面的内容下面:
<%= javascript_tag "var ssid = '#{builder.object.serving_size_id}';" %>
然后,在通过AJAX重试选项后,检查ssid
变量并选择正确的选项。
答案 1 :(得分:0)
ex:“div id =”serving_size“class =”nice“rel =”&lt;%= h num%&gt;“&gt; Stuff Goes Here ... / div&gt;”
application.js中的执行以下操作:
//的application.js
(文档)$。就绪(函数(){ 如果($( '#serving_size'){ $( '#serving_size')。住( “鼠标悬停” 功能(){ //我们正在徘徊在特定的div id服务大小上 如果($( '#serving_size')。hasAttr( '相对')){ alert($('#serving_size')。attr('rel'); //你的动态rel值和fire函数 } } } 如果(“好”){ $( '好')。住( “鼠标悬停” 功能(){ //我们现在正在徘徊在页面上的任何项目上,并且类很好 如果($(本).hasAttr( '相对')){ //我们现在正在使用jQuery对象ref并查找obj是否具有attr rel 警报($(本).attr( '相对')); //显示动态rel值 } } } });
如果您使用上述代码,您应该可以执行任何操作,并从每个设置的事件回调中激活任何自定义代码。
jQuery中的'live'函数很棒,因为它可以在最终会出现在页面上的项目上调用(例如,如果你用ajax填充某些东西,jQuery将为页面中的那个项目做好准备)< / p>
我希望这有帮助。