Допустим, у меня есть контрольный тест.Почему рубины на рельсах link_to перенаправляют на себя?
В тесте я определяю 3 действия:
def zah
end
def zeh
end
def zih
end
У меня есть мнение:
zah.html.erb
zeh.html.erb
zih.html.erb
и по маршрутам.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>
, что делает перенаправление из зах быть самим собой.
работают реки маршруты возвращает это:
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 к з)?
Edit:
я обнаружил, что добавление имени в связи делает сгенерированный код работает правильно:
<%= link_to 'zeh', test_zeh_path%>
Я видел первое использование (link_to test_zeh_path) here 22:45 ,
Ruby on rails api говорит, что если имя nil передано, тогда «значение самой ссылки станет именем».
Что касается ошибки, я задавался вопросом, почему Дэйв Джонс смог создать ссылку без имени, но он не был и что можно увидеть по его исходному коду.
Куда вы ожидаете от этого посещения? – jpriebe
Я ожидаю, что это будет идти от zah до zeh, но вместо этого указывается на zah. link_to test_zeh_path должен создать ссылку на zeh, а не zah. – Pfeiffer
@jpriebe Я добавил несколько новых сведений. – Pfeiffer