5

Tôi đang gửi một yêu cầu javascript đến một hành động điều khiển để cố gắng chuyển hướng đến một trang html khác nếu các điều kiện nhất định không được đáp ứng. Sau khi xem qua một số câu hỏi, đây là những gì tôi đã đưa ra:Chuyển hướng đến html từ javascript yêu cầu không hoạt động (Rails)

def twittertweet 
    if current_user && current_user.twitter_token 
    .... 
    else 
    flash[:notice] = "You must be registered with Twitter to do that." 
    respond_to do |format| 
     format.js { render(:update) { |page| page.redirect_to authentications_url } } 
    end 
    end 
end 

Tôi muốn chuyển hướng_ đến authentications_url. Tuy nhiên, đây là những gì sẽ xảy ra:

Started POST "/twittertweet.json" for 127.0.0.1 at 2012-04-11 13:38:27 -0400 
    Processing by ItemsController#twittertweet as */* 
    Parameters: {"id"=>"22"} 
    Category Load (0.3ms) SELECT "categories".* FROM "categories" 
Rendered items/update.html.erb within layouts/application (0.0ms) 
Completed 200 OK in 112ms (Views: 79.9ms | ActiveRecord: 5.7ms) 

Như bạn có thể thấy, nó thậm chí không cố chuyển hướng đến xác thực_url. Tuy nhiên, tôi biết tuyên bố "khác" là đạt được (tôi đã đặt tuyên bố để giúp tôi tìm ra điều đó).

Bất kỳ giải pháp nào cho vấn đề này?

Cập nhật Nếu bạn thử giải pháp của DanS, có một MissingTemplateError. Nó vẫn đang cố gắng chuyển hướng đến các mụC# cập nhật:

ActionView::MissingTemplate (Missing template items/update, application/update with {:handlers=>[:erb, :builder, :coffee], :formats=>[:json], :locale=>[:en, :en]}. Searched in: 
    * "/Users/dylandrop/Documents/givespend/app/views" 
    * "/Users/dylandrop/.rvm/gems/ruby-1.9.2-p290/gems/devise-2.0.4/app/views" 
):  
+0

Bạn có cần hiển thị (: cập nhật) không? 'format.js {redirect_to authentications_url}' – DanS

+0

@DanS Nếu tôi làm điều này, thông báo "Bắt đầu GET"/xác thực "cho 127.0.0.1 lúc 2012-04-11 13:57:03 -0400 Đang xử lý bởi AuthenticationsController # index as */* "etc ... nhưng không thực sự tải trang – varatis

+0

@DanS Nói cách khác nó nói nó đã trả về" authentications/index.html.erb "nhưng không thực sự làm bất cứ điều gì – varatis

Trả lời

12

Tôi đoán bạn gọi twittertweet qua ajax. Sau đó, trả lời thông qua mã javasctipt:

format.js { render :js => "window.location.href = '#{some_path}'" } 
+0

Ah, cảm ơn bạn vì điều này – varatis

+0

cảm ơn bạn. câu trả lời này đã giúp tôi –

Các vấn đề liên quan