如何在选择框中使用外键列数据时获取它

时间:2010-02-04 19:11:13

标签: ruby-on-rails

我在rails code上有这个ruby

<%= builder.select(:serving_size_id, '') %>

我没有故意指定任何选项,因为我在页面加载时使用不同的方式设置选项(使用jQuery和Ajax)。

问题:我有什么方法可以从“serving_size_id”列中获取值但不更改该行?我有一部分用于新的和编辑,我认为如果我可以在JS中设置所选索引,那将是很好的。

有什么想法吗?

2 个答案:

答案 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)

在rails中使用jQuery很容易,但比原型稍微困难一点。

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>

我希望这有帮助。