В вашем контроллере вы можете сделать это:
class WhitelabelsController < ActionController
def edit
@whitelabel = params[:id] ? Whitelabel.find(params[:id]) : current_whitelabel
redirect_to whitelabels_url unless @whitelabel
....
end
...
end
Теперь рельсы будут обрабатывать /whitelabel/edit
как /whitelabel/edit/#{current_whitelabel.id}
без указания идентификатора.
Если это происходит для более чем одного действия, вы можете сделать это как фильтр до. Обязательно удалите все @whitelabel = Whitelable.find(params[:id])
строк из отдельных действий.
class WhitelabelsController < ActionController
before_filter :select_whitelabel, :except => [:index, :new]
def select_whitelabel
@whitelabel = params[:id] ? Whitelabel.find(params[:id]) : current_whitelabel
redirect_to whitelabels_url unless @whitelabel
end
...
end
Отвечая на более четко сформулированный вопрос в комментарии:
Вы можете использовать единый ресурс в сочетании с приведенным выше кодом, чтобы получить желаемый эффект.
конфиг / routes.rb
map.resource :my_whitelabel, :controller => "whitelabels", :member => {:dashboard => :get}
Затем в контроллере whitelabels используйте приведенный выше код. Это делает вещи СУХОМИ, используя один и тот же контроллер для разных путей с одинаковыми действиями. Ресурс определяет действие панели мониторинга, поэтому вам придется добавить это и в контроллер. Но если вы используете версию before_filter, проблем не должно быть.