2011-08-24 29 views
7

Tôi sử dụng Rails 3.1, Devise và Omniauth.Gọi lại omniauth trên Facebook và #_

Vấn đề là khi gọi lại facebook đến ứng dụng của tôi url kết thúc bằng #_. Sau đó, khi trong hành động gọi lại tôi chuyển hướng đến mục nào đó - ví dụ: /after_signin kết quả chuyển hướng trong /after_signin#_.

Bất kỳ ý tưởng nào về cách xóa neo này khỏi URL?

CHỈNH SỬA: Nó không quan trọng những gì tôi đặt trong chức năng gọi lại. chuyển hướng Thậm chí đơn giản:

class Users::OmniauthCallbacksController < ApplicationController 
    def facebook 
    redirect_to "/after_callback" 
    end 
end 

nó sẽ cho kết quả sẽ /after_callback#_

Ngay cả trong điều khiển bình thường nếu bạn đi đến /#_ và bạn có một số chuyển hướng ther nó sẽ được chuyển đến các đường dẫn cụ thể với #_ nối cuối cùng.

EDIT2: Tôi vừa phát hiện ra rằng đó là lỗi trình duyệt để bảo toàn neo. Vì vậy, nó phải được xử lý ở phía giao diện người dùng.

+0

Vui lòng hiển thị mã chức năng gọi lại của bạn. –

+0

@Ben Lee: ở đây bạn đi –

+0

đó chỉ là kỳ quái. tại sao giá trị băm sẽ vượt qua? có thể thử 'redirect_to"/after_callback ",: anchor => '''? –

Trả lời

2

Nếu bạn tin tưởng rằng đó là sự cố trình duyệt, bạn chỉ có thể sử dụng JavaScript để cập nhật phần hash của đối tượng location của window. Có thể một cái gì đó như thế này:

if (window.location.hash.search('#_') >= 0) { 
    window.location.hash = ''; 
} 
Các vấn đề liên quan