📜  rails 在 url 中传递参数 - Ruby (1)

📅  最后修改于: 2023-12-03 15:19:42.013000             🧑  作者: Mango

Rails 在 URL 中传递参数

在 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 来接收参数。

URL 帮助程序

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。