【问题标题】:How do I fix a missing forward slash in link_to url如何修复 link_to url 中缺少的正斜杠
【发布时间】:2016-01-14 20:42:54
【问题描述】:

我正在学习在 rails 4 中使用 haml。

我将此行添加到我的“demo/index.html.haml”文件中:

= link_to 'Hello with parameters',:controller => 'demo', :action => 'hello', :id=> 21, :page => 5 

生成的 html 输出在字符串 hello 和 21 之间缺少一个斜杠,如下所示:

<a href="/demo/hello21?page=5">Hello with parameters</a>

我不确定为什么缺少正斜杠。

我的 Gemfile 有这个:

 gem 'haml-rails' 

请告诉我是否可以提供更多信息来帮助解决此问题。

我正在跑步:

  • Windows 7
  • ruby 2.1.5p273(2014-11-13 修订版 48405)[i386-mingw32]
  • Rails 4.2.2
  • haml (4.0.7)
  • haml-rails (0.9.0)
  • html2haml (2.0.0)

提前谢谢你。

编辑

有人问我我的 route.rb:

Rails.application.routes.draw do
  root 'demo#index'
  # Default Route
  match ':controller(/:action(:id(.:format)))', :via => :get
end

当我运行 rake 路线时,我得到:

$ rake routes
DL is deprecated, please use Fiddle
Prefix Verb URI Pattern                           Controller#Action
  root GET  /                                     demo#index
       GET  /:controller(/:action(:id(.:format))) :controller#:action

【问题讨论】:

  • 您的路线可能有错误?你是如何定义路线的?
  • 另一个指针:Rails 生成路径辅助方法。在您的情况下,我希望 hello_demo_path(21) 可用。 rake routes 将列出它们(不带 _path 后缀)。
  • @Raffael 我将我的 route.rb 文件添加到问题中。

标签: ruby-on-rails ruby ruby-on-rails-4 haml


【解决方案1】:

您的路径中已经缺少斜线。在:action 之后添加它,如下所示:

match ':controller(/:action/(:id(.:format)))', :via =&gt; :get

【讨论】:

  • 另外,请不要在生产中使用这种通用匹配模式。它将所有公共控制器方法公开为操作,这可能会带来安全风险。不过,只要修补一下就完全没问题了。
  • 另外,您可以将其缩写为get ':controller(/:action/(:id(.:format)))'
  • 感谢您的帮助和建议。我会派上用场的。
猜你喜欢
  • 2014-07-12
  • 1970-01-01
  • 2015-08-11
  • 1970-01-01
  • 2017-03-01
  • 1970-01-01
  • 2019-10-12
  • 1970-01-01
  • 2019-01-11
相关资源
最近更新 更多