【发布时间】:2015-04-11 08:57:34
【问题描述】:
假设我有一个控制器测试。
在测试中我定义了 3 个动作:
def zah
end
def zeh
end
def zih
end
我有意见:
zah.html.erb
zeh.html.erb
zih.html.erb
在 routes.rb 下我有:
get 'test/zah'
get 'test/zeh'
get 'test/zih'
如果我在 zah.html.erb 下编写,使用从 rubymine IDE 自动创建的代码,则:
<%= link_to test_zeh_path%>
我会用这个得到我的页面源代码:
<a href="/test/zah">http://localhost:3000/test/zeh</a>
这使得来自 zah 的重定向成为它自己。
运行 rake 路由会返回:
Prefix Verb URI Pattern Controller#Action
test_zah GET /test/zah(.:format) test#zah
test_zeh GET /test/zeh(.:format) test#zeh
test_zih GET /test/zih(.:format) test#zih
谁能向我解释为什么链接会指向自身(从 zah 到 zah)而不是另一个页面(从 zah 到 zeh)?
编辑:
我发现在链接中添加名称可以使生成的代码正常工作:
<%= link_to 'zeh', test_zeh_path%>
我在22:45看到了第一个用法(link_to test_zeh_path)here。
Ruby on rails api 确实表示如果传递了 nil 名称,则“链接本身的值将成为名称。”。
至于我自己的一个错误,我想知道为什么 Dave Jones 能够创建一个没有名称的链接,但他不能,这可以在他的源代码中看到。
【问题讨论】:
-
你希望它去哪里?
-
我希望它从 zah 到 zeh,但它指向 zah。 link_to test_zeh_path 应该创建一个指向 zeh 而不是 zah 的链接。
-
@jpriebe 我添加了一些新信息。
-
奇怪...很高兴你让它工作了。抱歉,我无法解释原因。
-
对不起@jpriebe,我找到了原因。这是我自己的注意力不足。我不确定是否应该删除此问题或将其留在这里以帮助任何发现它的人,因为我没有像我一样关注。
标签: ruby-on-rails view controller routes rubymine