获取rails路由以反映数据库lisiting

时间:2018-02-25 16:24:57

标签: ruby-on-rails seo router rails-routing

我目前有一个搜索列表数据库的页面。点击选择后,视图会链接到该列表的显示页面:

<div class="listings_wrapper">
<% @listings.each do |listing| %>
  <%= link_to listing_url(listing), class: "listing_link" do %>
  <div class="listing">
    <div class="picture">
      <% if listing.thumbnail != nil %>
        <%= image_tag(listing.thumbnail, class: "list_image") %>
      <% end %>
    </div>

当前路由为:

的节目页面
  get 'listings/:listing_id', to: 'listings#show', as: 'listing'

将获取地址

  localhost3000/listing/612983618 (arbitrary id)

我尝试做的是获取路径以显示路径中数据库的信息,而不是用于搜索引擎优化:

  localhost3000/listing/[address]/[booking_id] 

当我尝试调整到

  get 'listings/:listing_id', to: 'listings#show', as: 'listing/:address/:booking_id'

我在加载时被阻止了。我一直在寻找类似答案的stackoverflow,但尚未解决这个问题。由于链接正在拉动对象本身,并且路径正在从中拉出id,因此引用地址键是有意义的,但显然缺少某些东西。帮助

1 个答案:

答案 0 :(得分:1)

为了使<a target='_blank' href='/code/some_file.cpp'>的URI能够接收对象的地址和booking_id,您可以将路径定义中的别名移动到uri参数,例如:

listings#show

现在它将等待这两个属性。在控制器中,如果要从两个发送的属性中找到该特定对象,则可以使用find_by

get 'listing/:address/:booking_id', to: 'listings#show'

注意这会有效,但是如果你有多个记录具有相同的地址和booking_id,find_by将只返回第一个记录。