Я улучшил уценку таким образом, чтобы создать ссылку на страницу пользователя. Как видите, я проверяю, существует ли пользователь, и создаю ссылку на его страницу. Если он не существует, я использую поиск
class MarkdownRenderer < Redcarpet::Render::HTML
include Rails.application.routes.url_helpers
def paragraph(text)
text.gsub! (/@(\w+)/) do |match|
user = User.find_by_username($1)
if user != nil
link_to match, user_path($1)
else
link_to match, search_path(search: { author: $1 })
end
end
text
end
Но он говорит мне
No route marches {: action=>"show", : controller=>"users", :locale=>"Luca"} missing required keys: [:id]
как это возможно? $ 1 - мое имя пользователя.
Я также пытался заменить
link_to match, user_path($1)
на
link_to match, user_path(user.username)
, но у меня та же проблема.
Содержимое routes.rb
:
devise_for :users, controllers: {
sessions: 'sessions'
}
authenticated do
scope :users do
resources :options, as: :user_options, only: [:index]
get :subscriptions, to: 'me#followed_pages', as: :user_followed_pages
get :events, to: 'me#event_subscriptions', as: :user_event_subscriptions
end
end
resources :users, only: :show
Как исправить?