我正在尝试实现需要使用html5绘图画布的Rails 3应用程序。
到目前为止,我有一个Sketch支架,我已将索引和显示视图修改为并排(我输入了隐藏的 div 在那里只是为了表明我计划在div中托管画布:
目前在 application.js 文件中,我有一个脚本,它通过Ajax请求访问show动作,并将其放在Sketches列表旁边。这是代码:
// Show individual sketch
$(function(){
var $sketch_div = $('#show_sketch_div');
// return html instead of js
$('a[data-remote]').live('ajax:beforeSend', function(e, xhr, settings){
xhr.setRequestHeader('accept', '*/*;q=0.5, text/html, ' + settings.accepts.html);
});
// Handle sketch name links with the data-remote attribute
$('a[data-remote]').live('ajax:success', function(xhr, data, status){
$sketch_div
.html(data)
.show();
});
});
此外,“草图”列表中的每个链接都有一个与之关联的类(为了使用JQuery获取它):
<td><%= link_to 'Show', sketch, :remote => true, :class => 'show_sketch_button' %></td>
我将Sketch控制器设置为渲染JSON:
def show @sketch = Sketch.find(params [:id])respond_to do |format| format.html # show.html.erb format.xml { render :xml => @sketch } format.json { render :json => @sketch } end
端
这部分是我真正陷入困境的地方。
我计划在点击Sketch的 show 按钮时使用JQuery插入Canvas标记。但是,我不知道如何使用Javascript获取相关草图的 id 参数,然后使用它来生成仅与特定 id 相关联的Canvas元素。
我已经搜索了JSON教程,但我找不到任何似乎能解决我想要做的事情。我也是JSON的新手 - 所以我可能会错过它。
有没有人有任何想法或示例可以指向我?
答案 0 :(得分:3)
如果我是对的,你想把草图对象的ID写入你的html,稍后再用JavaScript。
在link_to标记中创建“data-”html5属性。在html5中,您可以创建以“data-”开头的标签,这些标签将有效。
<%= link_to 'Show', sketch, :remote => true, :class => 'show_sketch_button', :"data-sketch-id" => sketch.id %>
在jQuery中,您可以使用$('a.show_sketch_button[data-sketch-id="<NUMBER>"]')
顺便说一下,我不建议使用.live事件处理。每当它发生变化时,它就会解析完整的DOM。而不是,只需使用.bind(),. unbind()&lt; ---如果你需要删除事件处理程序。