link_toアクションは、コードがどこにあるかに応じて、作成またはインデックス付けされます

StackOverflow https://stackoverflow.com/questions/1429643

  •  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(...)に変更すれば大丈夫です。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top