Rails:向控制器添加操作

时间:2016-04-11 01:54:46

标签: ruby-on-rails model-view-controller controller routing

我正在为用户创建一个应用。我的UsersControllershow方法。因此,id = 1可以访问/users/1的用户。

我的routes.rb文件包含:users个资源。因此,/users/1/editedit的用户呈现id = 1页面。

我要完成的是创建一个新操作,允许用户通过/users/USER_ID/request向任何用户发出请求。

我该怎么做?提前感谢帮助!

2 个答案:

答案 0 :(得分:2)

首先,创建以下路线(routes.rb):

get '/users/:id/request' => 'users#request', as: :user_request

其次,向request添加UsersController方法:

def request
  @user = User.find params[:id]
  # do your thing
end

您可以在视图中创建指向此网址的链接,如下所示:<%= link_to 'Request', user_request_path(@user.id) %>

答案 1 :(得分:0)

不确定你的意思是“控制器内的控制器”。通过将块传递到resources路径,可以实现上述请求。

但是,将“request”用作操作名称非常危险,因为request是操作控制器中常用的方法:

<强>的routes.rb

resources :users do
   put :process_request, on: :member
end

用户控制器:

def process_request
   # ...
end