📅  最后修改于: 2023-12-03 15:19:42.013000             🧑  作者: Mango
在 Rails 中,我们可以通过 URL 传递参数来向控制器传递数据。这些参数可以是动态的,也可以是静态的。本文将介绍如何在 Rails 中使用 URL 传递参数。
静态参数通常是指在 URL 中指定的固定参数。例如,我们可能有一个名为 orders
的控制器和一个 show
动作,我们可以使用 /orders/1
的 URL 来显示具有 ID 1 的订单。
# routes.rb
resources :orders
# orders_controller.rb
def show
@order = Order.find(params[:id])
end
# orders/show.html.erb
<h1>Order <%= @order.id %></h1>
<p>Amount: <%= @order.amount %></p>
上面的代码演示了如何在 URL 中使用静态参数。
动态参数通常是指用户输入的参数。例如,我们可能有一个搜索功能,用户可以在其中输入搜索关键字。在这种情况下,我们需要将搜索关键字作为参数传递给控制器。
# routes.rb
get '/search/:query' => 'search#results'
# search_controller.rb
def results
@query = params[:query]
@results = Item.search(@query)
end
# search/results.html.erb
<h1>Search Results for '<%= @query %>'</h1>
<ul>
<% @results.each do |result| %>
<li><%= result.name %></li>
<% end %>
</ul>
上面的代码演示了如何在 URL 中使用动态参数。我们可以使用 get
命令将动态 URL 映射到控制器动作中,然后在控制器中使用 params
来接收参数。
Rails 提供了一些帮助程序,以简化 URL 的生成和解析。其中一个是 link_to
,它可以用来生成链接。例如,我们可以使用以下代码来生成一个指向订单页面的链接:
<%= link_to 'View Order', order_path(@order) %>
上面的代码将生成一个链接,其中包含订单的 ID。
另一个有用的帮助程序是 url_for
,它可以用来生成 URL。例如:
url_for(controller: 'orders', action: 'show', id: 1)
上面的代码将生成指向具有 ID 1 的订单的 URL。
本文介绍了在 Rails 中使用 URL 传递参数的基础知识。我们了解了静态和动态参数、如何使用帮助程序生成链接和 URL,并提供了示例代码。希望这篇文章能够帮助你更好地了解 Rails。