Rails:将url与base url匹配

时间:2013-05-10 20:53:10

标签: ruby-on-rails-3.2

我有一个简单的快速问题。我有一个网址:

  http://www.mealnut.com/foodios/cakerystore

需要将其作为

  http://www.mealnut.com/cakerystore 

有人可以告诉你怎么做吗?我是铁杆新手。

2 个答案:

答案 0 :(得分:1)

你的问题仍然不清楚,但我认为你的路线需要一个包罗万象的规则.rb:

get "*username" => "foodios#user_action"

这将允许您为每个用户提供根网址,这是我认为您真正要求的:

  • http://www.mealnut.com/cakerystore
  • http://www.mealnut.com/bakeland
  • http://www.mealnut.com/cookieworld

这应该是您在routes.rb文件中定义的最后路由。这是因为此路由将匹配所有未与其他路由匹配的网址在文件的前面定义。 (Rails尝试按照定义的顺序匹配路由。)

此路线将网址定向到FoodiosController::user_action操作(例如方法)。 (当然,您可以重命名user_action。)

此操作的定义如下:

# In FoodiosController

def user_action
  # params[:username] comes from '*username' in the route
  @user = User::find_by_username(params[:username])

  unless @user.nil?
    # not sure what you want to show, but this would do user#show 
    render @user
    # or you can render some other path
  else
    # redirect to some error page
  end
end

因为这条路线捕获所有内容,所以其他情况下需要做的事情不仅仅是无效的用户名,而是你可能获得的任何类型的错误URL。现在,这一切都受到这一行动的控制。

对于它的价值,我认为你最好不要这样做。听起来你应该有一个UsersController,你的URL应该是http://www.mealnut.com/users/cakerystore。这会容易得多。

信用/进一步阅读:

答案 1 :(得分:0)

我怀疑这是你问题的答案。但这是你问题的答案。

'http://www.mealnut.com/foodios/cakerystore'.gsub(/\/foodios/,'')