Ruby on rails 映射两个模型以使用example.com/<;名称>;
我的应用程序中有一个Ruby on rails 映射两个模型以使用example.com/<;名称>;,ruby-on-rails,ruby,Ruby On Rails,Ruby,我的应用程序中有一个用户模型和一个项目模型。我希望这两个都能在http://example.com/和http://example.com//edit 如果它只是一个模型,我可以在我的路由中添加一个低优先级的匹配'/:username'条件。我该如何处理多个模型呢?这可能是个坏主意——我不建议您这样做。可能有更好的方法来满足您的需求--example.com/users/123/ 但是,如果必须这样做,您可能会创建第三个控制器,我将其称为快捷方式控制器 首先,您需要路由到快捷方式控制器,以便将:
用户
模型和一个项目
模型。我希望这两个都能在http://example.com/
和http://example.com//edit
如果它只是一个模型,我可以在我的路由中添加一个低优先级的
匹配'/:username'
条件。我该如何处理多个模型呢?这可能是个坏主意——我不建议您这样做。可能有更好的方法来满足您的需求--example.com/users/123/
但是,如果必须这样做,您可能会创建第三个控制器,我将其称为快捷方式控制器
首先,您需要路由到快捷方式控制器,以便将:/name
变量传递给它进行显示和编辑。请参见本节中的布线思路
然后,在快捷方式控制器操作中,您需要有一个优先级顺序(如果用户和项目同名),首先检查与给定名称匹配的用户名,然后显示/编辑该用户名,或者查找项目,然后显示错误404
它看起来像:
def show
if @user = User.find_by_name(params[:name])
render 'users/show'
elsif @project = Project.find_by_name(params[:name])
render 'projects/show'
else
raise ActiveRecord::RecordNotFound, "Error message"
end
end
无论如何,这可能是可行的,但我也不确定这是否是一个好主意,我怀疑这个想法中有很多怪癖,你必须解决。祝你好运 当一个用户被命名为一个项目,或者反过来命名时,您将如何处理?