link_toアクションは、コードがどこにあるかに応じて、作成またはインデックス付けされます
-
07-07-2019 - |
質問
ページ分割されたモデルのインデックスの各ページを循環させたい。 jqueryを使用してページを循環しています。 link_to式がjqueryによって呼び出されたときにcreateアクションを呼び出していることがわかりました。 link_to式は、他の状況でインデックスアクションを呼び出します。
たとえば:
<div id="links">
<% 1.upto(@total_pages) do |number|%>
<%= link_to 'Page',"#{clients_path}?page=#{number}" %>
<br />
<% end %>
</div>
デフォルトのルーティング(map.resources:clients)で予想されるように、インデックスアクションを呼び出すリンクを作成します。
ページを切り替えるには、次のhtmlを使用します:
<div id="show" style="display: none">
<% 1.upto(@total_pages) do |number|%>
<%= link_to 'Page#{number}',"#{clients_path}?page=#{number}" %>
<% end %>
</div>
<a id="stop" href="#" onclick="stop()">stop</a>
<a id="start" href="#" onclick="start()" style="display: none">start</a>
<div id="output"></div>
そして、これがjqueryです:
var cur = 0;
var links = [];
var timeout;
function nextLink() {
if (cur + 1 >= links.length) {
cur = 0;
} else {
cur++;
}
return links[cur];
}
function nextPage() {
$.post(nextLink(), function(data) {
$("#output").fadeOut("slow", function(){
$("#output").html(data);
$("#output").fadeIn("slow");
});
});
}
function stop() {
clearTimeout(t);
$("#stop").hide();
$("#start").show();
}
function start() {
$("#start").hide();
$("#stop").show();
slideshow();
}
function slideshow() {
nextPage();
t = setTimeout("slideshow()", 5000);
}
$(document).ready(function() {
$("#show").children().each(function() {
links.push(this);
});
slideshow();
});
これにより結果として生じるアクションは、作成の呼び出しです。何が足りないのですか?
解決
これは、URL $ .post(...)に投稿しているために発生しています。 Railsは投稿を見て、マップされたリソースマジックでそれを処理しようとします。これを$ .get(...)に変更すれば大丈夫です。
所属していません StackOverflow