如果我在一个视图上,如何访问当前由该视图表示的ruby对象的ID?如何访问javascript中的当前rails对象ID
E.g.如果我在blah.com/jobs/1
我该如何得到1?
我想过修剪当前的网址,但看起来太脆弱了,尤其是考虑到我嵌套了资源。我能想到的唯一的其他简单方法是有一个隐藏的字段,但在没有任何表单的展示页面上隐藏输入似乎很愚蠢。
如果我在一个视图上,如何访问当前由该视图表示的ruby对象的ID?如何访问javascript中的当前rails对象ID
E.g.如果我在blah.com/jobs/1
我该如何得到1?
我想过修剪当前的网址,但看起来太脆弱了,尤其是考虑到我嵌套了资源。我能想到的唯一的其他简单方法是有一个隐藏的字段,但在没有任何表单的展示页面上隐藏输入似乎很愚蠢。
你说的正确,解析URL是一个坏主意,你最好明确提供它的地方。
您可以将data-job-id
属性附加到HTML中的标准元素,甚至可以是<body>
。然后你的JavaScript可以做这样的事情:
var id;
var $body = $('body');
if(id = $body.data('job-id'))
// Do some job things.
else if(id = $body('user-id'))
// Do some user things.
和你仍然是HTML5兼容,你不会有隐藏的输入渣土约。
您当然不需要使用<body>
,您的HTML可能有一些顶级容器,因此您可以使用该容器来替代已知的id
。
不只是<%= params [:id]%>做的伎俩?
我建议下列之一:
由于Jamsi建议,包括<%= params[:id] %>
或<%= @job[:id] %>
直接在您的javascript:
var id = <%= @job[:id] %>
如果你的JavaScript是在一个单独的文件,按照穆的建议。将<%= @job[:id] %>
添加到您的视图的一个html标记中,并对其进行查询。
下面是一个完整的例子,结合已经提供的答案。
使用params[:id]
和body元素,下面inline语句会产生data-params-id
属性,可一般在布局文件中使用:
<body <%= "data-params-id=#{params[:id]}" if params.has_key?(:id) %> >
然后可以用下面的访问:
的JavaScript:
var dataId = document.body.getAttribute('data-params-id');
jQuery:
var dataId = $('body').data('params-id');
'<%= params [:id]%>'是否有诀窍 – Francisco 2015-07-08 20:16:13