如何替换字符串中的模式
How to replace a pattern in a string
我构建了一个根据 params
呈现不同的页面。逻辑是这样的:
<% if params[:x] == "1" %>
<!--render version A-->
<% elsif params[:x] == "2" %>
<!--render version B-->
<% elsif params[:x] == "3" %>
<!--render version C-->
<% end %>
我希望每个版本都有两个 link,其中 link 到其他两个版本,因此 url 应该有不同的参数。我有一个 url 字符串 original_url
,它是:
"localhost:3000/page?x=1"
并希望根据 params
替换其参数。其他两个版本应该是:
"localhost:3000/page?x=2"
"localhost:3000/page?x=3"
如何从 original_url
中删除模式 ?x=[number]
并将其替换为其他内容?
对于版本 1,我可以做到
request.original_url.sub("?x=1", "?x=2")
然后
request.original_url.sub("?x=1", "?x=3")
但这对其他两个版本不起作用。
我会在 link 岁时这样做
<%= ([1,2,3]- [params[:x]]).each do |link_number| %>
<%= link_to "Version #{link_number}", "/page?x=#{link_number}" %>
<% end %>
这样每次加载页面时都会存在 link 到其他 2 个版本。
您可以通过控制器处理分音(这看起来更好)或使用类似的东西:
<%= render "version_#{['A','B','C'][params[:x] - 1]}" %>
如果对问题没有更好的理解,我无法提供超出这一点的帮助。
我构建了一个根据 params
呈现不同的页面。逻辑是这样的:
<% if params[:x] == "1" %>
<!--render version A-->
<% elsif params[:x] == "2" %>
<!--render version B-->
<% elsif params[:x] == "3" %>
<!--render version C-->
<% end %>
我希望每个版本都有两个 link,其中 link 到其他两个版本,因此 url 应该有不同的参数。我有一个 url 字符串 original_url
,它是:
"localhost:3000/page?x=1"
并希望根据 params
替换其参数。其他两个版本应该是:
"localhost:3000/page?x=2"
"localhost:3000/page?x=3"
如何从 original_url
中删除模式 ?x=[number]
并将其替换为其他内容?
对于版本 1,我可以做到
request.original_url.sub("?x=1", "?x=2")
然后
request.original_url.sub("?x=1", "?x=3")
但这对其他两个版本不起作用。
我会在 link 岁时这样做
<%= ([1,2,3]- [params[:x]]).each do |link_number| %>
<%= link_to "Version #{link_number}", "/page?x=#{link_number}" %>
<% end %>
这样每次加载页面时都会存在 link 到其他 2 个版本。
您可以通过控制器处理分音(这看起来更好)或使用类似的东西:
<%= render "version_#{['A','B','C'][params[:x] - 1]}" %>
如果对问题没有更好的理解,我无法提供超出这一点的帮助。