当前位置: 首页 > 知识库问答 >
问题:

Url中的Rails点,一个控制器有两条路由

奚飞星
2023-03-14

我正在制作一个带有一个控制器“项目”的站点,我想显示所有带有to路由的项目:

  • /管理员/项目/:id=/admin/projects/1(工作)

我试过这个

get 'front/:id' => 'projects#show', :constraints => { :id => /[^/]+/ }

我的文件:

路线。铷

Rails.application.routes.draw do

  resources :users, path: '/admin/clients'

  get 'admin' => 'admin#dashbord'

  get 'admin/profile'

  get 'admin/settings'

  get 'admin/_admin_header'

  get 'front' => 'front#index'

  get 'front/profile' => 'front#profile'

  get 'front/:id' => 'projects#show'

  scope '/admin' do
    resources :projects do
      resources :pictures
    end
  end

  end

项目管理器。铷

  layout 'adminApplication'
  before_action :set_project, only: [:show, :edit, :update, :destroy]


  def index
    @projects = Project.all
  end


  def show
  end


  def new
    @project = Project.new
  end


  def edit
  end


  def create
    @project = Project.new(project_params)

    respond_to do |format|
      if @project.save
        format.html { redirect_to @project, notice: 'Project was successfully created.' }
        format.json { render :show, status: :created, location: @project }
      else
        format.html { render :new }
        format.json { render json: @project.errors, status: :unprocessable_entity }
      end
    end
  end


  def update
    respond_to do |format|
      if @project.update(project_params)
        format.html { redirect_to @project, notice: 'Project was successfully updated.' }
        format.json { render :show, status: :ok, location: @project }
      else
        format.html { render :edit }
        format.json { render json: @project.errors, status: :unprocessable_entity }
      end
    end
  end


  def destroy
    @project.destroy
    respond_to do |format|
      format.html { redirect_to projects_url, notice: 'Project was successfully destroyed.' }
      format.json { head :no_content }
    end
  end

  private

    def set_project
      @project = Project.find(params[:id])
    end


    def project_params
      params.require(:project).permit(:name, :date, :location, :integer)
    end
end

前端控制器。铷

  def index
    @projects = Project.all
    render 'projects/index'
  end

  def show
  end

  def profile
  end
end

在项目/index.html.erb

- link_to 'Show', project
- link_to 'Show', front_path(project)

我已经检查了所有类似的问题。

谢谢你的帮助!

Kazei设计

最新消息

rake路由| grep front

           front GET    /front(.:format)             front#index
   front_profile GET    /front/profile(.:format)     front#profile
                 GET    /front/:id(.:format)         projects#show

共有2个答案

弓宏茂
2023-03-14

你可能想改变路线

get 'front.:id' => 'projects#show'
柴亦
2023-03-14

您正在使用命名的路由助手,但您没有指定它:

- link_to 'Show', front_path(project)

您可以在您的路线中看到,projects\showfront\u path不存在:

rake routes | grep front
           front    GET    /front(.:format)                            front#index
   front_profile    GET    /front/profile(.:format)                    front#profile
                    GET    /front/:id(.:format)                        projects#show

所以,在您的routes.rb中添加助手:

get 'front/:id' => 'projects#show', as: :custom_front

现在运行rake routes查看新的帮助程序(应该是custom\u front\u path)并使用它:

- link_to 'Show', custom_front_path(project)

请参阅文档-4.3覆盖命名帮助程序中的更多信息

 类似资料:
  • 我在我的控制器类中有一个动作,我想要如下两条不同的路线: 原因是我想给一些用户提供路由访问,但用户角色不同。 假设: 具有角色的用户可以访问 具有< code >用户角色的用户可以访问< code >用户选择日期 问题是是否有可能为一个动作有两个不同的路线?或者我为不同的路线复制了代码?

  • 仅支持 pathInfo 模式的 URL,且与控制器名称(方法)保持一致,控制器搜索规则为优先完整匹配模式。 路由规则 内置路由支持无限层级的路由,即Controller可以无限嵌套目录,如: http://127.0.0.1:9501/api/auth/login 执行的方法为:AppControllerApiAuth::login() http://127.0.0.1:9501/a/b/c/d

  • 我试图测试两个不同的控制器类,因为我想测试两个类中的每个方法,我将使用@WebMvcTest,我的问题是有一种方法可以将模拟注入到两个类中,可能是这样的? 当然,这会产生错误,所以这是否意味着当使用@WebMvcTest时,我们只能在一个控制器中测试方法?每班

  • 问题内容: 如何从不属于将要渲染到的视图的控制器中渲染? 例如: 如何从页面渲染页面视图? post_controller.rb 问题答案: 似乎有几种方法可以实现此目的: 您如何使用Ruby onRails响应控制器中的另一个js文件? 在Rails中渲染红宝石的替代视图

  • 自定义路由 easySwoole支持路由拦截。其路由利用fastRoute实现,因此其路由规则与其保持一致,该组件的详细文档请参考 GitHub文档 路由定义 若需要再easySwoole使用路由拦截功能,请在应用目录(默认为App)下,建立Router类,井继承Core\AbstractInterface\AbstractRouter实现addRouter方法,如果在类UNIX系统下请严格注意文

  • 我在laravel的新,想重定向客户到特定的页面,如果这个条件是有效的,但有问题,你能帮助我吗