link_to и проблема с отсутствием маршрута - PullRequest
0 голосов
/ 11 апреля 2011

Я пытаюсь использовать link_to примерно так:

<%= link_to post.title, {:controller => 'posts', :action => 'show', :id => post.title}, :title => post.title %>

Если заголовок содержит точку (.), Я получаю следующую ошибку:

No route matches {:controller=>"posts", :action=>"show", :id=>"test.title"}

Но если нетпериод включен, все работает.

Кто-нибудь может мне помочь?

Я нашел решение. http://www.ruby -forum.com / topic / 101911 # 222985

Ответы [ 3 ]

1 голос
/ 11 апреля 2011

Решение, которое вы связали, является худшим. Перекрывающие рельсы, чтобы соответствовать вашей проблеме, это неправильно. Я скорее использую гем под названием friendly_id, это создаст URL-адрес слизняка из вашего id. Это легко настроить и использовать.

https://github.com/norman/friendly_id

1 голос
/ 11 апреля 2011

Проблема в :title => post.title Попробуйте вместо этого использовать объект post.

link_to post.title, :controller => 'posts', :action => 'show', :id => post

или даже лучше

link_to post.title, post
0 голосов
/ 11 апреля 2011

Он считает, что в маршруте он ожидает формат ".title", и он не был настроен.Поскольку ваш маршрут будет выглядеть примерно так: "/posts/test.title", не могли бы вы не использовать "/ posts / test-title", так как это лучшая структура URL для большинства веб-серверов?

Если вы это сделаетенужно взломать, в рельсах 2 вы можете использовать опцию ": требования", например:

map.connect '/post/:id/:title', :controller => 'forum', :action => 'show_post', :requirements => { :title => /.*/ }

...