新手问题 关于 get 请求发送两次的麻烦

KANG · 2017年03月22日 · 最后由 KANG 回复于 2017年03月23日 · 2893 次阅读

我正在做一个看板模式的邮箱管理,但是在实现过程中,发现当我点击一个链接时却发送了两次 get 请求,如下图所示:

后来自己摸索了下,又改好了。区别是:

当发生两次 get 请求时,在 gestionKanmail 方法(图中有显示这个方法名)末尾写的是:

render html: "<strong>gestion etablished</strong>".html_safe

后来改成了

redirect_to User 

就没这个问题了。

但是到此,我还是对这个麻烦的产生一头雾水,求指点。 (我也不知道需要提供什么代码)

附一些代码: 控制器中的

def gestionkanmail
        user = User.find_by(id:params[:id])
        puts 'Gestion kanban'

        login = user.login
        password = user.password
    #
         putMailInNonLus(login, password)


        # render html: "<strong>gestion etablished</strong>".html_safe

        redirect_to User
    end

view 中的:

<tbody>
    <% @users.each do |user| %>
      <tr>
        <td><%= user.login %></td>
        <td><%= user.password %></td>
        <td><a href="/users/<%= user.id %>" >Show</a></td>
        <td><a href="/users/call/<%= user.id %>" >CallMail</a></td>

        <!-- <td><%= link_to 'Show', user %></td> -->
        <td><%= link_to 'Edit', edit_user_path(user) %></td>
        <td><%= link_to 'Destroy', user, method: :delete, data: { confirm: 'Are you sure?' } %></td>
        <td><a href="/users/gestionkanmail/<%= user.id %>" >Gestion_KanMail</a></td>
      </tr>
    <% end %>
  </tbody>
</table>

路由的:

Rails.application.routes.draw do

  get 'users/gestionkanmail/:id', to: 'users#gestionkanmail'
  resources :users
  # For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html
  get 'users/call/:id', to:'users#call'

end

估计有 javascript 代码触发了两次请求。你的代码没法看,找人带一下吧。

@yakjuly 我没写 js 代码进去。难道 ror 会自己加入 js?我有点懵😂

KANG 回复

看 application.js 里面有哪些代码,rails 默认有 turbolink,可能触发了一次。

发两次请求还有一种可能是 chrome 插件导致的,可以开隐身窗口排查一下

还有可能是安装了各种管家 (qq 安全管家,360 安全卫士之类) 请求会被拦截转发 以前遇到过这种情况

还有可能是鼠标坏啦😊

yakjuly 回复

@yakjuly 好的 我去看看

mizuhashi 回复

@mizuhashi 恩 我一直用的 firefox 我卸载掉所有插件试试

dudu_zzzz 回复

@dudu_zzzz 这个解释足够强大💯

Turbolinks,获取的内容跟当前页面的 assets 有差异(之前返回内容是 HTML 片段,应该不是你想实现的行为),就会重新刷新一次。

Rei 回复

感谢提示,我去看看 turbolinks

KANG 关闭了讨论。 03月27日 15:40
需要 登录 后方可回复, 如果你还没有账号请 注册新账号