自定义资源到不同控制器的路径

时间:2013-05-30 09:09:46

标签: ruby-on-rails routing

我想为用户的日程安排创建路线,但在不同的控制器中执行操作。

通过以下路线,我对用户提出了无限循环请求。

  resources :users do
    member do
      get "schedule" => "schedule#user"
    end
  end

来自development.log的日志:

...

  [1m[35mCACHE (0.0ms)[0m  SELECT `users`.* FROM `users` WHERE `users`.`id` = 122 LIMIT 1
  [1m[35mCACHE (0.0ms)[0m  SELECT `users`.* FROM `users` WHERE `users`.`id` = 122 LIMIT 1
  [1m[35mCACHE (0.0ms)[0m  SELECT `users`.* FROM `users` WHERE `users`.`id` = 122 LIMIT 1
  [1m[35mCACHE (0.0ms)[0m  SELECT `users`.* FROM `users` WHERE `users`.`id` = 122 LIMIT 1

...

我尝试删除member块,但它仍然在循环中被阻止。

似乎是无限递归,但我不知道为什么。

编辑1:

我对get "users/:user_id/schedule" => "schedule#user"

有同样的问题

编辑2:

我的行动非常简单:

  def user
    @courses = Course.includes(:speakers).where("users.id = ?", params[:user_id])

    respond_to do |format|
      format.html { render 'user' }
    end
  end

演讲者是User,这是与课程的多对多关系。 我的观点只是JS中的一个日历,each循环遍历@courses

1 个答案:

答案 0 :(得分:0)

目前还不是很清楚你需要得到什么网址。控制器的作用是什么。

我会选择:

修改

get 'users/:id/schedule' => 'schedule#user', as: :schedule

这将在任何资源块之外。如果这不是你想要发布的你想要调用的控制器和动作,我会更新我的答案..我会至少尝试。祝你好运。

<强>控制器

class SalesController < ApplicationController
  def schedule
  end
end

<强>路由

get "users/:id/schedule" => 'sales#schedule', as: :schedule

链接

<%= link_to "go", schedule_path(user.id) %>

<强>结果

<a href="/users/1/schedule">Schedule</a>

点击它需要模板,我没有它。我不会那么远:)