Синатра и компьютерное имя - PullRequest
2 голосов
/ 07 мая 2011

Я полностью новичок в Ruby и Sinatra, поэтому, пожалуйста, простите за тривиальный вопрос:

Я хотел вычислить имя представления вместо простой передачи символа.Я хотел, чтобы одно и то же действие возвращало разные представления в зависимости от текущего состояния.Существует около 20 различных состояний, поэтому создание хорошего соглашения об именах позволяет мне очень легко выразить имя представления в виде строки:

get "/page" do
  erb "page-#{session[:page]}"
end

Когда я это делаю, все, что я получаю, это строка вместо отображаемого представления.Может кто-нибудь объяснить мне, как я мог сделать это в Синатре?

Ответы [ 2 ]

4 голосов
/ 07 мая 2011

Я бы сказал, что вы, вероятно, ищете String#to_sym.Я не проверял сейчас, но во всех примерах говорится, что erb получает символьный аргумент, а не строку - попробуйте это:

erb "page-#{session[:page]}".to_sym

или эквивалентно

erb :"page-#{session[:page]}"
1 голос
/ 07 мая 2011

Если вы передаете строку в erb, она пытается визуализировать эту строку напрямую, не ища представление с соответствующим именем.Преобразование строки в символ поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...