从视图调用 link_to 中的控制器方法 [英] Calling Controller Method in link_to from the view

查看:29
本文介绍了从视图调用 link_to 中的控制器方法的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的应用程序包含有订单的交易.在我的管理区域,我希望能够手动处理订单.

My application has deals which have orders. In my admin area I want to be able to process the orders manually.

在我的访问/交易视图中

In my access/deals view

<%= link_to "Process Orders", "Not sure what I put here?" %>

在我的访问/deals_controller

in my access/deals_controller

def process_orders
   @deals = Deal.find(params[:id]
   @orders = @deals.orders.where("state" == ?, "pending")

   @orders.each do |order|
     #order processing code here
   end
end

我应该如何构建我的 link_to 方法以在我的管理/交易控制器中调用 process_orders 方法?

How should I structure my link_to method to call the process_orders method in my admin/deals controller?

我想过类似的事情

<%= link_to "Process Orders", access_deal_path(deal) %>

这给了我以下网址

 localhost:3000/access/deals/9

我如何得到类似的东西

localhost:3000/access/deals/9/process_orders

我也愿意接受将 processing_orders 方法移动到模型或助手的建议,如果这是更好的方法的话.

I'm also open to suggestions on moving the processing_orders method to model or helper if that is a better way of doing this.

我的路线文件的摘录.

  resources :deals do
    resources :orders
  end

  namespace "access" do
    resources :deals, :podcasts, :pages, :messages
  end

推荐答案

您可以执行以下操作之一:

You can do 1 of the following:

创建自定义路由:

match 'access/deals/:id/process_orders' => 'access/deals#process_orders', :as => 'access_deal'

然后你可以使用这个link_to:

then you can use this link_to:

<%= link_to "Process Orders", access_deal_path(deal) %>

添加成员路由:

namespace "access" do
    resources :deals do
        member do
            get :process_orders
        end
    end
end

您的 link_to 将如下所示:

Your link_to will look something like this:

<%= link_to "Process Orders", process_orders_access_deal_path(deal) %>

这篇关于从视图调用 link_to 中的控制器方法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆