Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 将_重定向到锚定更改url,而不是页面rails 4_Ruby On Rails_Ruby On Rails 3_Ruby On Rails 4 - Fatal编程技术网

Ruby on rails 将_重定向到锚定更改url,而不是页面rails 4

Ruby on rails 将_重定向到锚定更改url,而不是页面rails 4,ruby-on-rails,ruby-on-rails-3,ruby-on-rails-4,Ruby On Rails,Ruby On Rails 3,Ruby On Rails 4,我在rails应用程序中集成了一个html模板。它实际上是一个单页模板,但使用锚将不同的部分呈现为页面。像 localhost:3000/#home localhost:3000/#email 呈现具有转换到不同页面效果的锚定。 现在,我的控制器里有这个 if @message.valid? NotificationsMailer.new_message(@message).deliver redirect_to(root_path, :notice => "M

我在rails应用程序中集成了一个html模板。它实际上是一个单页模板,但使用锚将不同的部分呈现为页面。像

localhost:3000/#home
localhost:3000/#email
呈现具有转换到不同页面效果的锚定。 现在,我的控制器里有这个

 if @message.valid?
      NotificationsMailer.new_message(@message).deliver
      redirect_to(root_path, :notice => "Message was successfully sent.")
 else
      flash.now.alert = "Please fill all fields."
      redirect_to root_path(anchor: 'email')
 end
在else部分中,重定向后,浏览器中的url确实更改为
localhost:3000/#email
,但仍显示
localhost:3000/#home
锚定部分。在我的导航栏中实际单击链接
localhost:3000/#email
后,更改主页并呈现
email
锚定

不过,DevTools和Firebug在控制台中并没有显示任何错误。有什么问题吗


任何帮助都将不胜感激

为什么要在页面中使用锚?Rails必须简单地添加锚点,但不会捕获哈希更改,因此不会呈现页面。当您单击链接时,它确实捕获了更改。@JustinD:点击这个有锚的链接:你没有看到你的浏览器向下滚动到锚中定义的注释吗?它还用于客户端调用JS函数,在使用主干/Angular.JS等时非常有用。@MrYoshiji,我知道为什么以及如何使用锚定链接。我甚至有一个用SammyJs开发的应用程序(使用散列更改路由)。我的问题更多的是,在Rails应用程序中,为什么要这样做?在我看来,您正在加载一个新页面。我相信问题不在应用程序的Rails部分,毕竟它确实正确设置了URL。看看你的HTML模板。