我想在旅游网站上制作seo友好的网址,不仅包括酒店,还包括位置:
www.domain.com/country-name/destination-name/hotel-name
我找到了许多为酒店名称制作漂亮网址的例子(使用to_param),并想知道如何在模型链上实现它。
答案 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 %>