Как сделать in-text-tag на ресурс в Rails?

Так же как и в тостере, можно упоминать любого пользователя по @user_name и затем можно перейти по ссылке на его профиль, так же хочеться сделать для другого ресурса в приложении.

Хотелось бы достичь следующего, при генерации html кода с разметкой тэгами, код замещает тэг на route_path(resource), который доступен в контроллере

Подскажите пути решения?
  • Вопрос задан
  • 2314 просмотров
Пригласить эксперта
Ответы на вопрос 1
@bukovki
Я бы попробовал решить задачу, используя helper. Регуляркой найти помеченное слово (например, @username) и подставить route_path(resource)
helper:
module PostsHelper
	def in_text_tag(s)
		...тут действия над s...
	end
end

view:
<%= in_text_tag(@post.content) %>

Работающий пример:
application_helper.rb:
module ApplicationHelper
  def in_text_tag(s)
    s.sub(/(@\d*)/) {
      |i| User.where(phonenumber: i.gsub(/@/, '')).first.name
    }
  end
end

index.html.erb:
<%= in_text_tag(@message) %>

@message = "Здравствуй, @4000!"

На страничке сгенерится:
Здравствуй, Алексеев Алексей!
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы