Ruby on rails 4 RubyonRails:如何更改路由地址
我是rails的新手,我想知道是否有办法更改路线的名称。我马上解释这个句子。我有一个名为users\u controller的控制器,下面是我控制器中的代码:Ruby on rails 4 RubyonRails:如何更改路由地址,ruby-on-rails-4,ruby-on-rails-3.2,routes,custom-routes,Ruby On Rails 4,Ruby On Rails 3.2,Routes,Custom Routes,我是rails的新手,我想知道是否有办法更改路线的名称。我马上解释这个句子。我有一个名为users\u controller的控制器,下面是我控制器中的代码: def create if @user.save redirect_to @user end 我的routes.rb文件如下: resources :users get '/users/:id', to: 'users#show' 现在假设我有一个表单,并且我正确地填写了它,那么我将被重定向到localhost:3000/u
def create
if @user.save
redirect_to @user
end
我的routes.rb文件如下:
resources :users
get '/users/:id', to: 'users#show'
现在假设我有一个表单,并且我正确地填写了它,那么我将被重定向到localhost:3000/users/id(id=some value)
,我会这样做。现在我希望这个URL类似于localhost:3000/registered
。当我单击submit按钮时,如果一切正常,我希望看到URL为localhost:3000/注册的,它将带我进入我的show action,或者与localhost:3000/用户/id(id=some value)
一样工作。我不希望ID可见
为此,我尝试了get'register',to:'users#show'
,但仍然看到与localhost:3000/users/id(id=some value)相同的URL
。请告诉我怎么做
rails g controller registered index
这是我的
表演动作
def show
@user = User.find(params[:id])
end
我尝试了另一种方法,在同一个控制器中执行另一个操作。我在我的用户\u控制器中执行了索引操作,然后执行了无方法错误您需要在用户控制器的
创建
和更新
操作中将重定向到
class UsersController < ApplicationController
def create
# get user from params
if @user.save
redirect_to registered_path
else
render :new
end
end
def update
# get user from params
if @user.save
redirect_to registered_path
else
render :edit
end
end
end
只需将您的路由用作:
match "/registered", :to => "users#show", :as => :user_registered, via: :get
要使用此路径,您将使用
redirect_to user_registered_path(id: user_id)
在您的方法中。最后,从我的讨论中可以清楚地看到,无法隐藏您的ID,但我们可以更改它们在浏览器上的显示方式。一种建议的方法是为ID创建一个散列,并使用它在显示操作中显示项目,或者另一种方法是将操作重定向到某个静态页面 这本书很好,我提到过。从那里我得到了一个“注册”的想法,到:'users#show'我应该将我的控制器更改为其他控制器,而不是使用@usersomething像redirect#u to registered#u path这样的命令。然后,它会给我一个错误,您正在查找的页面在Heroku上运行时不存在。它说没有IDI就找不到用户。我认为这与我的show action有关。我看到了问题。问题在于,您正在将
注册的
映射到“用户#显示”
,这需要用户的id。您是要为所有用户创建一个boiler plate注册页面,还是希望为每个用户创建一个唯一的注册页面?我希望所有用户在登录时都能看到同一个显示页面,其中只包含他们的姓名。你可以假设它是某个网站的一个感谢页面,但它怎么知道这是一个GET或POST对不起,我的不好!在末尾添加:via:method-being-get或post让我这样检查fot.:)找不到没有ID的用户,它会说:(但是当我这样做时,match'users/:ID',to:'users#show',:constraints=>{:ID=>/[a-Z]+/},via::get
它不起作用