私の構文は少しずれているかもしれませんが、これが私がそれについてどうやって行くかです:
HTML
<div data-id="<%= @article.id %>" class="article"><%= @article.title %></div>
JS
これは、jsがどのように機能するかを説明するのに役立つ場合があります:http://guides.rubyonrails.org/asset_pipeline.html。私が通常行うことは、特定のビューのすべてのバインディング(およびその他のメソッド)を含むオブジェクトを作成することです。次に、ビューの下部のどこかで、ドキュメント準備完了ブロックにオブジェクトのインスタンスを作成し、DOMをバインドします。すべてのjsは、レイアウトに含める場所に関係なく、マニフェストファイル(application.js)によって追加されます。
app / Assets / javascripts / users.js
// Wraps your binding in a document ready function
// Runs as soon as the DOM is loaded
$(function() {
$('.article').on('click', function() {
var id = $(this).attr('data-id');
$.get('articles/' + id, function(data) {
// Handle the result
$('.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コントローラー
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