セレクターで選択した項目をそのまま保持してページ遷移した後もその項目に戻りたい時ってありますよね?
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
を付けることでコントローラーで値を取得できました。