我对rails很新,并且正在使用jpages插件来构建一个概念。我的javascript如下:
的Javascript
$("ul#thumbs li").click(function(){
$(this).addClass("selected").siblings().removeClass("selected");
var img = $(this).children().clone().addClass("animated fadeIn");
var linkValue = $(this).children("img").attr("alt");
$("div.img").html( img ).wrap($('<a></a>').attr('href', linkValue));
});
HTML
<ul id="thumbs" class="clearfix">
<li><img src="example1.jpg" alt="page1.html"></li>
<li><img src="example2.jpg" alt="page2.html"></li>
<li><img src="example3.jpg" alt="page3.html"></li>
</ul>
我希望能够改变这一行:
$("div.img").html( img ).wrap($('<a></a>').attr('href', linkValue));
这样包装就像:
$("div.img").html( img ).attr(linkValue));
,html为:
<li>
<img src="example1.jpg" alt="page1_path">
</li>
必须有一种更简单的方法,而不是采用alt信息并在开头<%= link_to"
和最后do "%>
包装javascript。任何帮助,将不胜感激。
答案 0 :(得分:3)
这是不可能的。
当您在ruby中编写<%=
时,如果您曾观察过,HTML标记永远不会包含ruby标记,即<%=
。
在这里,您通过javascript插入ruby标签,但无法在HTML上编写ruby标签。他们需要先编译。
更好的关注或类似的东西。
$("ul#thumbs li").click(function(){
$(this).addClass("selected").siblings().removeClass("selected");
var img = $(this).children().clone().addClass("animated fadeIn");
var linkValue = $(this).children("img").attr("alt");
$("div.img").html(img);
$("div.img img").wrap($('<a></a>').attr('href', linkValue));
});
答案 1 :(得分:0)
如果您使用的是Ruby on Rails,请使用.js.erb
现在你可以在你的javascript中包含Ruby了。 e.g ...
$("#container").append(<%= link_to "Foo", root_path %>);
如果您需要访问控制器或模型(我怀疑您可能需要),那么从您的资产调用ruby Javascript将无效。
你需要编写内联的javascript,作为HTML视图的一部分,或者创建一个与控制器方法相对应的javascript文件,并从那里调用它。 e.g。
在你的Foo控制器......
def some_method
respond_to do |format|
format.js
end
end
在您的Foo视图中,创建一个包含您需要的所有JavaScript的some_method.js.erb
。该文件可以访问您的控制器和模型方法。