Ruby on rails 在RubyonRails中定制资源的URL
我有一个应用程序,它有以下三种模型:Ruby on rails 在RubyonRails中定制资源的URL,ruby-on-rails,ruby,ruby-on-rails-4,inheritance,routing,Ruby On Rails,Ruby,Ruby On Rails 4,Inheritance,Routing,我有一个应用程序,它有以下三种模型:Doctor、Patient和继承自User模型的Admin。这三个模型都有自己的视图和控制器,但登录形式相同。下面是用户登录的方法 // session_controller.rb def create user = User.find_by(email: params[:session][:email]) if user && user.authenticate(params[:session][:pas
Doctor
、Patient
和继承自User
模型的Admin
。这三个模型都有自己的视图和控制器,但登录形式相同。下面是用户登录的方法
// session_controller.rb
def create
user = User.find_by(email: params[:session][:email])
if user && user.authenticate(params[:session][:password])
redirect_to user
else
flash.now[:danger] = 'Invalid e-mail/password combination'
render 'new'
end
end
和重定向到特定于型号视图的调用的路由
# routes.rb
resources :patients, :doctors, :admins
在这里之前,一切都很好,我被重定向到URI,例如/patients/1或/doctors/2。但是,我不希望在URL中看到用户ID。如何将其更改为自定义设置,例如/:username或/ 您需要覆盖模型中的to_params方法 检查这一页 你可以这样做
def to_param
id + "-" + username
end
如果从to_param方法中删除id,则必须更新获取用户/医生/etc的方式
例如,如果在to_param方法中只有用户名,则必须使用
User.find_by_username(params[:id])
您需要在模型中重写to_params方法 检查这一页 你可以这样做
def to_param
id + "-" + username
end
如果从to_param方法中删除id,则必须更新获取用户/医生/etc的方式
例如,如果在to_param方法中只有用户名,则必须使用
User.find_by_username(params[:id])
您需要在模型中重写to_params方法 检查这一页 你可以这样做
def to_param
id + "-" + username
end
如果从to_param方法中删除id,则必须更新获取用户/医生/etc的方式
例如,如果在to_param方法中只有用户名,则必须使用
User.find_by_username(params[:id])
您需要在模型中重写to_params方法 检查这一页 你可以这样做
def to_param
id + "-" + username
end
如果从to_param方法中删除id,则必须更新获取用户/医生/etc的方式
例如,如果在to_param方法中只有用户名,则必须使用
User.find_by_username(params[:id])
实现这一目标的方法很少:
- 假设您使用一些辅助方法,如current_user,您可以创建指向profile_controller#show的路由/配置文件。无论您是谁(医生、患者、管理员),您都已登录,并且您的“资源”ID在url中不可见。 编辑:如果您不确定如何正确地向RoR应用程序添加身份验证,请查看“warden”gem(或更复杂的“Desive”,它的引擎盖下有warden)
- 您可以使用“友好”URL,在大多数情况下使用“1-username”等URL。您当然可以删除ID部分(1-xx),但您仍然必须提供唯一标识符(它可以是资源的uuid、名称/电子邮件与某些字段的唯一组合等)。有关友好URL的更多信息,请参见此处:
- 假设您使用一些辅助方法,如current_user,您可以创建指向profile_controller#show的路由/配置文件。无论您是谁(医生、患者、管理员),您都已登录,并且您的“资源”ID在url中不可见。 编辑:如果您不确定如何正确地向RoR应用程序添加身份验证,请查看“warden”gem(或更复杂的“Desive”,它的引擎盖下有warden)
- 您可以使用“友好”URL,在大多数情况下使用“1-username”等URL。您当然可以删除ID部分(1-xx),但您仍然必须提供唯一标识符(它可以是资源的uuid、名称/电子邮件与某些字段的唯一组合等)。有关友好URL的更多信息,请参见此处:
- 假设您使用一些辅助方法,如current_user,您可以创建指向profile_controller#show的路由/配置文件。无论您是谁(医生、患者、管理员),您都已登录,并且您的“资源”ID在url中不可见。 编辑:如果您不确定如何正确地向RoR应用程序添加身份验证,请查看“warden”gem(或更复杂的“Desive”,它的引擎盖下有warden)
- 您可以使用“友好”URL,在大多数情况下使用“1-username”等URL。您当然可以删除ID部分(1-xx),但您仍然必须提供唯一标识符(它可以是资源的uuid、名称/电子邮件与某些字段的唯一组合等)。有关友好URL的更多信息,请参见此处:
- 假设您使用一些辅助方法,如current_user,您可以创建指向profile_controller#show的路由/配置文件。无论您是谁(医生、患者、管理员),您都已登录,并且您的“资源”ID在url中不可见。 编辑:如果您不确定如何正确地向RoR应用程序添加身份验证,请查看“warden”gem(或更复杂的“Desive”,它的引擎盖下有warden)
- 您可以使用“友好”URL,在大多数情况下使用“1-username”等URL。您当然可以删除ID部分(1-xx),但您仍然必须提供唯一标识符(它可以是资源的uuid、名称/电子邮件与某些字段的唯一组合等)。有关友好URL的更多信息,请参见此处:
- 实现这一目标的方法很少:
- 实现这一目标的方法很少:
- 实现这一目标的方法很少: