如何在javascript中访问当前rails对象id
如果我在视图上,我如何访问该视图当前表示的ruby对象的ID 例如,如果我在如何在javascript中访问当前rails对象id,javascript,ruby-on-rails,ruby,ruby-on-rails-3,Javascript,Ruby On Rails,Ruby,Ruby On Rails 3,如果我在视图上,我如何访问该视图当前表示的ruby对象的ID 例如,如果我在blah.com/jobs/1上如何获得1 我曾想过修剪当前的URL,但这似乎太脆弱了,特别是考虑到我有嵌套的资源。我能想到的另一个简单的方法是有一个隐藏字段,但在没有任何表单的显示页面上有一个隐藏输入似乎很愚蠢。你是对的,解析URL是一个坏主意,最好在某个地方显式提供它 您可以将数据作业id属性附加到HTML中的标准元素,甚至可能是。然后,您的JavaScript可以执行以下操作: var id; var $body
blah.com/jobs/1上
如何获得1
我曾想过修剪当前的URL,但这似乎太脆弱了,特别是考虑到我有嵌套的资源。我能想到的另一个简单的方法是有一个隐藏字段,但在没有任何表单的显示页面上有一个隐藏输入似乎很愚蠢。你是对的,解析URL是一个坏主意,最好在某个地方显式提供它 您可以将
数据作业id
属性附加到HTML中的标准元素,甚至可能是
。然后,您的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兼容的,你不必到处乱搞隐藏的输入
您不必使用
当然,您的HTML可能有一些顶级容器,其中包含一个已知的id
,因此您可以使用它。不只是这样做吗?我建议使用以下方法之一:
或
:
var id=
添加到视图的一个html标记中,并查询它下面是一个完整的例子,结合已经提供的答案 使用
params[:id]
和body元素,以下内联语句将生成一个data params id
属性,该属性通常可在布局文件中使用:
<body <%= "data-params-id=#{params[:id]}" if params.has_key?(:id) %> >
jQuery:
var dataId = document.body.getAttribute('data-params-id');
var dataId = $('body').data('params-id');