我有一个div
,当用户点击该链接时我会将其隐藏,并在他们再次点击该链接时显示。我们希望当用户选择隐藏它时将div
折叠起来,因此我们在用户数据库中添加了一个布尔列hide_todo
,并添加了一个方法来测试{{{ 1}}。隐藏是使用jQuery完成的,我们希望在用户点击user_controller
时将hide_todo
的值更改为true,并在用户点击Hide
时将其更改为false。我如何访问Show
中的Ruby变量?
答案 0 :(得分:2)
在js中有三种方法可以访问ruby变量:
A)如果您使用带有资产管道的rails 3.1+,您可以将.erb扩展名添加到文件中,如下所示:“application.js.erb”。现在你可以在.js<%ruby.code();中使用erb标签了。 %GT;这是我会说这种奇怪的方式,它只会在特殊情况下产生感觉。
B)通常,您需要将所需数据添加到HTML文档的DOM中,然后从中检索数据。
例如在你的erb中(或者在haml中以类似的方式)模板就像这样:
<div id="collapsable" data-show="<%= model.hide.todo%>"> </div>
现在在jQuery中,您可以通过以下方式访问数据:
hide_todo = $("#collapsable").data("show");
C)另一种方法是进行ajax调用,该调用将从rails应用程序返回数据。
在你的情况下,我推荐第二种方法。
答案 1 :(得分:0)
我们最终使用$.get('toggle_hide');
,向控制器添加一个方法来切换布尔值并将其映射到route.rb
中的资源。谢谢你的建议!