小编Ale*_*x92的帖子

Rails - 使用AJAX通过link_to设置会话变量

在我的rails应用程序中,我有一个带有两个链接的视图:

authenticate.html.erb:
<%= link_to t('.start_new'), edit_registration_path, id: "new-button", class: "btn btn-default" %>
<% unless @organisation_survey.blank? %>
  <%= link_to t('.start_edit'), edit_registration_path, id: "edit-button", class: "btn btn-default" %>
<% end %>
Run Code Online (Sandbox Code Playgroud)

第一个应该向用户发送新的调查,而第二个应该让他编辑他以前的调查.两者都应该首先将用户发送到edit_registration_path,因为在这两种情况下用户都已登录并可以编辑他的姓名,电子邮件等.如果用户单击第二个链接来编辑他之前的调查,则应设置会话变量:

authenticate.html.erb:  
<script type="text/javascript">
  $('edit-button').observe('click', function (event) {
    <% session[:edit_survey] = "y" %>
    event.stop();
  });
</script>
Run Code Online (Sandbox Code Playgroud)

我知道在html.erb文件中使用javascript并不好,但是我无法在js.coffee文件中设置会话[:edit_survey].在该文件中,我显然无法访问此会话变量,我无法将其设置为"y".但我真的需要设置这个会话变量,因为在另一个视图中我需要在新路径和编辑路径之间做出决定:

questions_info.html.erb:
<% if session[:edit_survey] == "y" %>
  <%= link_to t('.start'), edit_question_path(1), class: "btn btn-default" %>
<% else %>  
  <%= link_to t('.start'), new_question_path(1), class: "btn btn-default" %>
<% end %> 
Run Code Online (Sandbox Code Playgroud)

我想要的是,如果用户单击第一页上的编辑按钮,则转到edit_question_path(1),如果他单击了新按钮,则转到new_question_path(1).

目前会话[:edit_survey]设置为"y",即使没有点击编辑按钮,我想无论点击哪个按钮,点击事件都会触发.当用户决定点击新按钮时,他将结束编辑他之前的调查而不是进行新的调查 - 我不希望这样.因此,我正在寻找一个解决方案,让用户决定是否要进行新的调查或编辑他之前的调查,然后他应该被发送到正确的question_path.因为第一页与这两个按钮之间有一些页面和问题我不能只使用参数...任何想法都赞赏.

编辑:现在我知道javascript不是问题,而不是它我应该使用一些AJAX.我现在尝试了很多解决方案,但现在从未设置变量. …

javascript events ruby-on-rails click link-to

2
推荐指数
1
解决办法
2132
查看次数

标签 统计

click ×1

events ×1

javascript ×1

link-to ×1

ruby-on-rails ×1