基于用户输入的Rails根路径

奥列·亨里克·斯科格斯特罗姆(Ole HenrikSkogstrøm)

我需要让用户选择一个根路径(或获取)作为他创建的许多页面之一。这意味着,我希望能够创建“神奇页面”页面并将其设置为首页(http://example.com/)。

这是可能吗?我尝试将用户发送到固定操作并将用户重定向到选定的操作,但这给我留下了这样的路由:http : //example.com/page/8

我想要的结果是:http : //example.com/(而该页面是用户选择的页面)。

任何帮助表示赞赏:)

编辑:我需要澄清。我希望用户能够选择页面或照片。这意味着我需要用户能够选择控制器和动作。

像这样:

constraints(Subdomain) do
    get "/" => '#{user_selected_controller}#{user_selected_action}/#{:id}'
end

上面的代码是完全错误的。但是我认为它说明了我想要完成的工作。

奥列·亨里克·斯科格斯特罗姆(Ole HenrikSkogstrøm)

我不是通过路由而是通过使用users表创建到Pages和Galleries的多态关联来解决此问题的。像这样:

首先创建多态关联

# In my page model
has_one :user, :as => :home

# In my Gallery model
has_one :user, :as => :home

# In my User model
belongs_to :home, polymorphic: true

然后我将其用作users_controller中的控制器:

def home
    # Multitenant rails app. This refers to user who owns the subdomain visited.
    @user = current_tenant

    # This is not optimal, results in two queries.
    if @user.home_type.classify.constantize.exists?(@user.home_id)

        # This is the same as @page = Page.find(params[:id])
        instance_variable_set("@#{@user.home_type.downcase}", @user.home_type.classify.constantize.find(@user.home_id))

        # this is the same as render 'pages/show', layout: false
        render "#{@user.home_type.downcase.pluralize}/show", layout: false
    else
        redirect_to photos_path
    end

end

我的路线如下所示:

# Set a page as the home screen
post 'pages/set_home/:id' => 'pages#set_home', as: :set_home_page

# User selected Home screen
get "/" => 'users#home'

设置主页:

# In pages_controller
  def set_home
    @user = current_user
    @user.home = @page
    if @user.save
      redirect_to pages_path, notice: "Home screen set to #{@page.title}"
    else
      redirect_to pages_path, alert: "An error occured. Home not set."
    end
  end

这样,我可以通过users.home变量加载相关资源,同时使用到用户controller home动作的常规路由。

这可能是一个效率低下的解决方案,但它是我唯一想到的解决方案。请随时提出改进建议:)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Rails Devise-为登录用户和匿名用户定义单独的根路径

来自分类Dev

if语句基于用户输入

来自分类Dev

Rails:根路径重定向

来自分类Dev

用户输入文件路径

来自分类Dev

如何更改登录用户的根路径?

来自分类Dev

基于用户输入的操作Swift

来自分类Dev

基于用户输入的动态公式

来自分类Dev

基于用户输入的动态公式

来自分类Dev

用户输入中的路径注入

来自分类Dev

Rails清理用户输入

来自分类Dev

Rails清理用户输入

来自分类Dev

如何在基于$ uri的Nginx中使用动态根路径?

来自分类Dev

Rails 4清理用户输入

来自分类Dev

Rails 方法评估用户输入

来自分类Dev

基于用户输入的加权数组

来自分类Dev

如何基于用户输入创建动态CSS

来自分类Dev

基于用户选择/输入滤波的集合对象

来自分类Dev

使用SwiftUI基于用户输入的动态TextField

来自分类Dev

基于用户输入的迷宫中的移动顺序

来自分类Dev

价格计算(基于用户输入的金额水平)

来自分类Dev

基于用户输入的加权数组

来自分类Dev

基于用户输入的汇编调用子程序

来自分类Dev

基于用户输入的下拉菜单

来自分类Dev

基于用户输入的动态隐藏列

来自分类Dev

在 Shiny 中基于用户输入的条件过滤

来自分类Dev

WooCommerce,基于用户输入的捐赠金额

来自分类Dev

基于用户输入的发票定价变化

来自分类Dev

elFinder-从用户输入动态加载路径

来自分类Dev

用户输入以显示最短路径