Help us understand the problem. What is going on with this article?

ruby on rails でアンカーを付けてページにパラメーターを送るやり方

More than 1 year has passed since last update.

セレクターで選択した項目をそのまま保持してページ遷移した後もその項目に戻りたい時ってありますよね?

railsの場合、アンカーをサーバーに保存出来ない仕様なようで、そのままanchorに記載するだけではコントローラーでparamsで取得はできません。

そこで取得したアンカーをajaxで送るようにしましたが、なぜかコントローラーには届かないようです(ajax通信は成功しているがコントローラーには反映されない)。

<!--<%# selector_view %>-->
<%= link_to '撮影', new_user_index_picture_path(@user, index.id, :anchor => #{@anchor1/@anchor2}) %>
//ここからselector_viewから受けたアンカーをコントローラー側に渡す

        anchor = decodeURIComponent(location.hash);
        hash_split = anchor.split("/");
        var anchor1 = hash_split[0];
        var anchor2 = hash_split[1];
        $.ajax({
            url: "/users/" + gon.user_id + "/indices/" + gon.index_id + "/pictures/new",
            type: "get",
            data: {
                   anchor1: anchor1,
                   anchor2: anchor2,
                  },
            processData: false,
            contentType: false,
            datatype: "text",
            success: function(data){
                    alert("success");
            },
            error: function(jqXHR, textStatus, errorThrown){
            alert(textStatus);
                alert(errorThrown.message);
                alert(jqXHR.status);
                alert(jqXHR.responseText);
                },
        });

こんな感じです。

何故かはわかりませんでしたが、他の方法を教えてもらいました。

<!--<%# selector_view %>-->
<%= link_to '撮影', new_user_index_picture_path(@user, index.id, params: { anchor1: @anchor1, anchor2: @anchor2 }) %>

上記のようにパスにparamsを付けることでコントローラーで値を取得できました。

ueyamamasashi
齢五十にしてまさに「天命を知る」 すなわち、今からプログラミング始めて「爆死」せよとの仰せ。 その過程を赤裸々に・・・。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away