2015-02-11 4 views
1

Допустим, у меня есть контрольный тест.Почему рубины на рельсах 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 передано, тогда «значение самой ссылки станет именем».

Что касается ошибки, я задавался вопросом, почему Дэйв Джонс смог создать ссылку без имени, но он не был и что можно увидеть по его исходному коду.

+0

Куда вы ожидаете от этого посещения? – jpriebe

+0

Я ожидаю, что это будет идти от zah до zeh, но вместо этого указывается на zah. link_to test_zeh_path должен создать ссылку на zeh, а не zah. – Pfeiffer

+0

@jpriebe Я добавил несколько новых сведений. – Pfeiffer

ответ

-1

Потому что вы написали url в части дисплея.

Вы можете просто сделать
<%= link_to 'Goto Zeh', test_zeh_path %> и вам будет хорошо.

 Смежные вопросы

  • Нет связанных вопросов^_^