【发布时间】:2014-10-13 17:53:16
【问题描述】:
我对 Rails 很陌生,请注意!我暂时需要使用这些版本:
导轨:3.2.18
红宝石:1.9.3-p194
每当我从link_to 按钮调用自定义方法destroy_session 时,它似乎工作正常。但是,每当我手动刷新页面时,session[:session_token] 就会被清除,就好像调用了 destroy_session 方法一样......我不知道为什么?
如果我从视图中完全删除 <link_to> 按钮,那么无论我刷新浏览器多少次,session[:session_token] 都会保持原样。这是我当前的工作流程,可以进一步阐述:
- 单击“获取令牌”按钮发出 AJAX 请求并将响应存储在
session[:session_token] - 按预期刷新视图并将会话令牌写入屏幕。
- 如果我在浏览器中手动点击刷新,会话令牌就会消失,就像我调用了
destroy_session方法一样。
查看
/app/views/searches/index.html.erb
<%= link_to 'Delete Token', action: destroy_session_path %>
控制器
/app/controllers/searches_controller.rb
helper_method :destroy_session
def destroy_session
session[:session_token] = nil
end
路线
/config/routes.rb
resources :searches
match '/searches/destroy_session' => 'searches#destroy_session', :as => :destroy_session
post '/searches/get_token' => 'searches#get_token'
root :to => 'searches#index'
$ rake 路线
searches GET /searches(.:format) searches#index
POST /searches(.:format) searches#create
new_search GET /searches/new(.:format) searches#new
edit_search GET /searches/:id/edit(.:format) searches#edit
search GET /searches/:id(.:format) searches#show
PUT /searches/:id(.:format) searches#update
DELETE /searches/:id(.:format) searches#destroy
destroy_session /searches/destroy_session(.:format) searches#destroy_session
ajax_sum POST /ajax/sum(.:format) my#ajax_sum
searches_get_token POST /searches/get_token(.:format) searches#get_token
root / searches#index
不会引发任何错误或异常。有人可以帮我确定我在这里做错了什么吗?非常感谢!
【问题讨论】:
标签: ruby-on-rails ruby session routes link-to