我可以将参数传递到控制器路径吗?
Can I pass params into a controller path?
我有几个不同的 links,除了一个细微差别外,它们做同样的事情。是否有可能 link 它们全部到同一条路径,但是使用不同的参数来改变控制器中那个微小差异的行为?
我在想这样的事情:
查看
<%= link_to "Link-A", link_path(@user), @x = 1 %>
<%= link_to "Link-B", link_path(@user), @x = 2 %>
users_controller.rb
def link
@user = User.find(params[:id])
#code that should be executed for both links
if @x == 1
#do something
elsif @x == 2
#do something else
end
end
我知道这个特定的代码可能甚至不正确,但希望它能清楚地说明我正在尝试做什么。
我认为您应该像这样将参数作为选项添加到您的路径中:
<%= link_to "Link-A", link_path(@user, x: "1") %>
然后在控制器中你可以做:
...
@input = params[:x]
if @input ...
...
在视图中,也发送控制参数
<%= link_to 'Link', request.parameters.merge({:x => 'special'}) %>
在控制器中,检查参数然后启动然后逻辑。
if params.fetch(:x)
# A different logic
end
查看:
<%= link_to "Link-A", link_path(@user, x: 1) %>
<%= link_to "Link-B", link_path(@user, x: 2) %>
控制器:
def link
@user = User.find(params[:id])
x = params[:x]
#code that should be executed for both links
if x == 1
#do something
elsif x == 2
#do something else
end
end
我有几个不同的 links,除了一个细微差别外,它们做同样的事情。是否有可能 link 它们全部到同一条路径,但是使用不同的参数来改变控制器中那个微小差异的行为?
我在想这样的事情:
查看
<%= link_to "Link-A", link_path(@user), @x = 1 %>
<%= link_to "Link-B", link_path(@user), @x = 2 %>
users_controller.rb
def link
@user = User.find(params[:id])
#code that should be executed for both links
if @x == 1
#do something
elsif @x == 2
#do something else
end
end
我知道这个特定的代码可能甚至不正确,但希望它能清楚地说明我正在尝试做什么。
我认为您应该像这样将参数作为选项添加到您的路径中:
<%= link_to "Link-A", link_path(@user, x: "1") %>
然后在控制器中你可以做:
...
@input = params[:x]
if @input ...
...
在视图中,也发送控制参数
<%= link_to 'Link', request.parameters.merge({:x => 'special'}) %>
在控制器中,检查参数然后启动然后逻辑。
if params.fetch(:x)
# A different logic
end
查看:
<%= link_to "Link-A", link_path(@user, x: 1) %>
<%= link_to "Link-B", link_path(@user, x: 2) %>
控制器:
def link
@user = User.find(params[:id])
x = params[:x]
#code that should be executed for both links
if x == 1
#do something
elsif x == 2
#do something else
end
end