使用Ruby on Rails在URL中包含belongs_to模型对象的名称

时间:2016-09-01 20:08:55

标签: ruby-on-rails ruby seo

我想在旅游网站上制作seo友好的网址,不仅包括酒店,还包括位置:

www.domain.com/country-name/destination-name/hotel-name

我找到了许多为酒店名称制作漂亮网址的例子(使用to_param),并想知道如何在模型链上实现它。

1 个答案:

答案 0 :(得分:0)

请遵循以下代码。

配置/ routes.rb中

get ':country_name/:destination_name/:hotel_name', to: 'hotels#show'

应用程序/控制器/ hotels_controller.rb

class HotelsController < ApplicationController
    before_action :set_hotel, only: [:show]
    def index
        @hotels = Hotel.all
    end
    def show
    end
    private
        def set_hotel
            @hotel = Hotel.find(params[:id])
        end
end

应用程序/视图/酒店/ index.html.erb

<% @hotels.each do |hotel| %>
    <%= hotel.name %>
    <% country = hotel.country.downcase.gsub(" ","-") %>
    <% destination_name = hotel.destination_name.downcase.gsub(" ","-") %>
    <% hotel_name = hotel.name.downcase.gsub(" ","-") %>
    <% @url = "#{country}/#{destination_name}/#{hotel_name}?id=#{hotel.id}" %>
    <td><%= link_to 'Show', @url %></td>
<% end %>