Rails での AJAX 呼び出しの応答を装飾するために、Quicksand jQuery プラグインを使用しようとしています。
リンク:
<% Project.services.each_with_index do |service, index| %>
<%= link_to_function(service, "regatherProjects('#{service}', #{index})", :id => "service_link_#{index}") %>
<%= " / " if !index.eql?(Project.services.length - 1) %>
<% end %>
JS:
function regatherProjects(service_name, service_id) {
$.get("/index_project_update", { service: service_name }, function(data) {
$('#home_projects').quicksand($(data), {
adjustHeight: 'dynamic'
});
});
$('#home_services').find('a').removeClass("on");
$('#service_link_' + service_id).addClass("on");
};
コントローラ:
def index_project_update
if params[:service] && !params[:service].blank?
@projects = Project.highlighted.where(:service => params[:service])
else
@projects = Project.highlighted
end
end
意見:
$("#home_projects").replaceWith("<%= j(render('projects')) %>")
プロジェクト:
<div id="home_projects">
<% if @projects.empty? %>
<p>No projects. <%= link_to_function("View All", "regatherProjects('')") %>.</p>
<% else %>
<ul class="all_projects">
<% @projects.each_with_index do |project, index| %>
<li data-id="<%= project.customer.name.underscore.downcase %>_<%= project.name.underscore.downcase %>">
<%= link_to(image_tag(project.project_images.first.image.home), project) %>
</li>
<% end %>
</ul>
<% end %>
</div>
問題は、AJAX リクエスト (以下を参照) によって返されるデータが、Quicksand が期待する形式ではないことだと思いますが、応答から関連情報を推定する方法がわかりません。私の AJAX リクエストからの応答は次のようなものです。
$("#home_projects").replaceWith("<some><html><that><i><need>")
したがって、問題は、置換 HTML を使用する必要がある場合に、Quicksand 呼び出しの宛先コードとして上記のコードを使用していることです。
<some><html><that><i><need>
AJAX リクエストは問題なく機能しますが、Quicksand をここに統合する必要があります。
私は欲しい:
- これを行うためのより良い方法または;
- 前述のコードの replaceWith() の引数を外挿して、Quicksand の宛先コードとして使用する方法。
助けが必要だと思われる情報が省略されている場合は、お問い合わせください。
これは私が Stack Overflow で尋ねた最初の質問なので、誤用について謝罪する義務があると感じています。