【问题标题】:Rails: add an action to a controllerRails:向控制器添加动作
【发布时间】:2016-08-01 00:31:22
【问题描述】:

我正在创建一个包含用户的应用程序。我的UsersController 有一个show 方法。因此,id = 1 的用户可以通过/users/1 联系到。

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

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

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

【问题讨论】:

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


    【解决方案1】:

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

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

    其次,给UsersController添加一个request方法:

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

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

    【讨论】:

    • 您能否将我的答案标记为已接受?这将使有类似问题的人更容易更快地找到解决方案。
    【解决方案2】:

    不确定您的意思是“控制器中的控制器”。通过将块传递给您的 resources 路由,上述请求应该是可能的。

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

    routes.rb

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

    用户控制器:

    def process_request
       # ...
    end
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-05-27
      • 1970-01-01
      • 1970-01-01
      • 2011-07-07
      • 1970-01-01
      • 2012-11-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多