Rails 如何在 Controller 中,让用户跳转到一个新窗口?

willmouse · 2012年02月24日 · 最后由 shawnyu 回复于 2012年02月25日 · 7315 次阅读

情况大概是我需要在 Controller 中处理一段 URL,然后让用户在新窗口中打开这个 URL

但我知道 redirect_to 本身只是回传 302,从而让浏览器打开新的地址,但是没办法在新的窗口中打开

Google 了一下,在 Stackoverflow 看到可以这样:

view: <%= link_to "Buy this product", buy_path, target: "_blank" %>

controller:

def buy
  ...
  redirect_to link
end

大概意思就是让用户 redirect 到 view 中的一个地址上,然后再从那个地址上用_blank 打开一个新窗口

但这样貌似是不行的,redirect 到标记了 target: "_blank"的 link 上还是本窗口中打开,无法在新窗口中打开

而且我本身需要在 Controller 中打开的地址是动态生成的,每次都不同,有什么办法可以实现这样的需求?

很遗憾没有这种玩法。 你可以在新窗口中跳进这个 controller

#1 楼 @ywencn

好吧是我 2 了,我在想说 URL 是用户 post 上去的数据生成的,突然一想 form 有没有 target 属性?

忘记这事了,直接在 form 上带上 target => "_blank"

多谢提醒

我觉得你向做的东西是 view 那里做的事情吧。应该用 link_to "xx",xx_path,:popup => true 之类的来打开一个新的 window。或者直接写 html

View

<%= link_to, "打开窗口", "#", :onclick => "getUrl()" %>   #html

function getUrl() {
  $.get("your_action_url", function(data){
     window.open(data)
})
}

Controller

def your_action
  #your logic (build a url you want)
  render :text => url_you_just_build 
end

代码不一定正确,我觉得这样的逻辑应该能满足你的要求,试试看。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号