2013-06-08 2 views
0

У меня есть приложение, в котором я переопределяю метод Rails def to_param, чтобы включить имя модели следующим образом: www.myapp.com/1-some-model-name, однако, когда вы переходите на www.myapp.com/1, вы получаете на одной странице с одним и тем же контентом, но это два разных URL-адреса. Какой лучший способ сделать переадресацию, чтобы каждый раз, когда я нажимал www.myapp.com/1 Я иду на www.myapp.com/1-some-model-name?Перенаправить все немодельные URL-адреса для названных в Rails

Спасибо, и любые советы очень ценятся.

ответ

0

Я пробовал найти решения here и elsewhere, но не смог заставить мое приложение работать правильно. (Я получил ошибку Error 310 (net::ERR_TOO_MANY_REDIRECTS))

Я делаю простое решение, но это решение работает достаточно хорошо.

Если вы используете to_param так:

def to_param 
    [id, name.parameterize].join("-") 
    end 

Вы просто добавить условие к действию на контроллер выглядит следующим образом:

def show 
    @user = User.find(params[:id]) 
    formal = @user.to_param 
    if formal != params[:id] 
     # on routes : match "/user/:id" => "users#show", :as => :show_user 
     redirect_to show_user_path([@user.id, @user.firstname.parameterize].join("-")) 
    end 
    end 
Смежные вопросы