0

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

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

需要使它成为

  http://www.mealnut.com/cakerystore 

任何人都可以告诉如何做到这一点?我是新来的轨道。

4

2 回答 2

1

你的问题仍然很不清楚,但我认为你需要在你的 routes.rb 中包含一个包罗万象的规则:

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

这将允许您为每个用户拥有根 u​​rl,这是我认为您真正要求的:

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

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

此路由将 url 指向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. 这会容易得多。

信用/进一步阅读:

于 2013-05-11T15:24:18.080 回答
0

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

'http://www.mealnut.com/foodios/cakerystore'.gsub(/\/foodios/,'')
于 2013-05-10T21:31:52.613 回答