如何在 rails 上的 Ruby 中的 views/pages 之间传递数据?
how to pass data between views/pages in Ruby on rails?
我在 rails 应用程序上有一个 ruby。我有一个列出超链接的视图,该视图也通过相同的 controller/action 呈现。当用户单击此页面上显示的超链接时,他们会转到相同的 controller/action,但 ID 参数不同。我希望能够在我的 controller/view 中告诉用户如何访问这些页面,即用户是否点击了这些超链接之一与用户来自不同的来源?
<div id='list'>
<a href='controller/action/1'> some link 1 </a>
<a href='controller/action/2'> some link 2 </a>
</div>
最好的方法是在链接中添加一个 URL 参数。
<div id='list'>
<a href='controller/action/1?via=from_view'> some link 1 </a>
<a href='controller/action/2?via=from_view'> some link 2 </a>
</div>
编辑
您可以使用 params
在您的控制器中访问此 URL 参数。简单示例:
class MyController < ApplicationController
def show
@via = params[:via] || "external"
end
end
<% if @via == "from_view" %>
<p>Hello coming from the view!</p>
<% elsif @via == "external" %>
<p>Hello coming from external!</p>
<% end %>
<div id='list'>
<a href='controller/action/1?via=from_view'> some link 1 </a>
<a href='controller/action/2?via=from_view'> some link 2 </a>
</div>
您可以轻松地将 URL 参数传递给 Rails URL 助手。
例如:
<%= link_to "Link Title", some_url_helper_path(:param1 => "value1", :param2 => "value2") %>
然后您将能够将参数从视图传递到控制器的操作。
用户来自哪里是 HTTP 规范的一部分(引荐来源 header),您可以使用 request.referer
在您的控制器中访问它 - 然后您可以检查该值是否与页面匹配你要定位。
如果您的控制器有 @origin = request.referer
,您可以在视图中使用 if @origin == 'http://example.com/page-1’
来切换正在渲染的内容。
这样你就不必记住用额外的参数装饰你的所有链接;依靠浏览器自动将其添加到 headers 的事实。
另见:
How to get request referer path?
https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Referer
我在 rails 应用程序上有一个 ruby。我有一个列出超链接的视图,该视图也通过相同的 controller/action 呈现。当用户单击此页面上显示的超链接时,他们会转到相同的 controller/action,但 ID 参数不同。我希望能够在我的 controller/view 中告诉用户如何访问这些页面,即用户是否点击了这些超链接之一与用户来自不同的来源?
<div id='list'>
<a href='controller/action/1'> some link 1 </a>
<a href='controller/action/2'> some link 2 </a>
</div>
最好的方法是在链接中添加一个 URL 参数。
<div id='list'>
<a href='controller/action/1?via=from_view'> some link 1 </a>
<a href='controller/action/2?via=from_view'> some link 2 </a>
</div>
编辑
您可以使用 params
在您的控制器中访问此 URL 参数。简单示例:
class MyController < ApplicationController
def show
@via = params[:via] || "external"
end
end
<% if @via == "from_view" %>
<p>Hello coming from the view!</p>
<% elsif @via == "external" %>
<p>Hello coming from external!</p>
<% end %>
<div id='list'>
<a href='controller/action/1?via=from_view'> some link 1 </a>
<a href='controller/action/2?via=from_view'> some link 2 </a>
</div>
您可以轻松地将 URL 参数传递给 Rails URL 助手。
例如:
<%= link_to "Link Title", some_url_helper_path(:param1 => "value1", :param2 => "value2") %>
然后您将能够将参数从视图传递到控制器的操作。
用户来自哪里是 HTTP 规范的一部分(引荐来源 header),您可以使用 request.referer
在您的控制器中访问它 - 然后您可以检查该值是否与页面匹配你要定位。
如果您的控制器有 @origin = request.referer
,您可以在视图中使用 if @origin == 'http://example.com/page-1’
来切换正在渲染的内容。
这样你就不必记住用额外的参数装饰你的所有链接;依靠浏览器自动将其添加到 headers 的事实。
另见:
How to get request referer path?
https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Referer