我语法可能有点问题,但是以下是我处理它的方法:
HTML
<div data-id="<%= @article.id %>" class="article"><%= @article.title %></div>
JS
这里有一些帮助你理解JavaScript如何工作的信息:http://guides.rubyonrails.org/asset_pipeline.html。我通常会创建一个包含某个视图所有绑定(和其他方法)的对象。然后在视图中,在底部的document ready块中创建对象的一个实例,并绑定DOM。所有JS代码都将由清单文件(application.js)添加到你在布局中包含它的位置。
app/assets/javascripts/users.js
$(function() {
$('.article').on('click', function() {
var id = $(this).attr('data-id');
$.get('articles/' + id, function(data) {
$('.article-window').html(data);
});
});
});
app/assets/javascripts/application.js
// This directive will include all your js files in the javascripts folder
//= jquery
//= require_tree .
app/views/layouts/application.html.erb(或者你的布局所在的任何位置)
意思是这个文件是应用程序中的一个布局文件,通常包含网站的共同元素,比如头部、尾部和导航栏等。
// This adds all your js to the page
<%= javascript_include_tag "application" %>
Rails Controller
class ArticlesController < ApplicationController
respond_to :html, :json
def show
@article = Article.find(params[:id]
respond_with do |format|
format.json { render :json => @article }
end
end
end
data-id
是一种自定义的HTML属性,您可以在任何元素上设置它。更多信息请参见此处。基本上,您需要将事件绑定到具有类article
的元素,然后使用jQuery从属性中推断出ID。 - Tracy Fu