LoginSignup
1
1

More than 5 years have passed since last update.

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

Last updated at Posted at 2019-02-25

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

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を付けることでコントローラーで値を取得できました。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1