2015-03-12 3 views
-3

Я построил страницу, которая отображается по-разному в зависимости от params. Логика-то вроде этого:Как заменить шаблон в строке

<% if params[:x] == "1" %> 
    <!--render version A--> 
<% elsif params[:x] == "2" %> 
    <!--render version B--> 
<% elsif params[:x] == "3" %> 
    <!--render version C--> 
<% end %> 

Я хочу, чтобы каждая версию, чтобы иметь две ссылки, которые ссылаются на два другие версии, поэтому URLs должна иметь разный Params. У меня есть URL-адрес строки original_url, которая:

"localhost:3000/page?x=1" 

и хотите заменить его параметр в зависимости от params. Две другие версии должны быть:

"localhost:3000/page?x=2" 
"localhost:3000/page?x=3" 

Как я могу устранить шаблон ?x=[number] из original_url и заменить его чем-то еще?

Для версии 1, я мог бы сделать

request.original_url.sub("?x=1", "?x=2") 

, а затем

request.original_url.sub("?x=1", "?x=3") 

, но тогда не будет работать на двух других версиях.

+0

Зачем вам это нужно заменить? Пожалуйста, объясните свой вариант использования, потому что вы, очевидно, можете использовать что-то вроде 'request.original_url.gsub (/ \? X =. /, '? X = YOUR_NUMBER_HERE')' – engineersmnky

+0

@engineersmnky Я включил его в исходный вопрос, но кто-то его отредактировал по какой-то причине ... Я добавил его обратно. –

ответ

-1

Я хотел бы сделать это за ссылки

<%= ([1,2,3]- [params[:x]]).each do |link_number| %> 
    <%= link_to "Version #{link_number}", "/page?x=#{link_number}" %> 
<% end %> 

Таким образом, каждый раз, когда страница загружается ссылку на других 2-х версиях будет существовать.

Вы можете обрабатывать партиалы через контроллер (который, кажется, лучше) или использовать что-то вроде:

<%= render "version_#{['A','B','C'][params[:x] - 1]}" %> 

Без лучшего понимания этой проблемы я не могу помочь за пределы этой точки.

Смежные вопросы