如何将多个参数传递给我指定控制器和操作的link_to调用?

时间:2013-06-21 03:42:18

标签: ruby-on-rails ruby-on-rails-3 controller link-to

我正在使用link_to来启动一个需要两个参数的控制器方法,以便执行我需要它执行的步骤。我似乎无法正确使用语法,我想知道是否因为您在使用此特定语法时无法传递多个参数。以下是我到目前为止的情况:

<%= link_to 'Select',
            {controller: 'groups',
             action: 'associate_subgroup_with_org',
             organization_id: organization.id,
             subgroup_id: @activity.group.id},
            class: 'button' %>

def associate_subgroup_with_org
    @organization = Group.find(params[:organization_id])
    @subgroup = Group.find(params[:subgroup_id])
    @subgroup.parent_group_id = @organization.id

    respond_to do |format|
      format.js
    end
end

链接无效,我从不输入控制器操作associate_subgroup_with_org。有人可以帮助我正确理解语法吗?

3 个答案:

答案 0 :(得分:7)

你可以这样做一条路线:

get '/groups/associate_subgroup_with_org' => 'groups#associate_subgroup_with_org', :as => :associate_subgroup

你可以发送任何号码。参数link_to:

<%= link_to 'Select',
            {controller: 'groups',
             action: 'associate_subgroup_with_org',
             organization_id: organization.id,
             subgroup_id: @activity.group.id},
            class: 'button' %>

或者,

<%= link_to 'Select',associate_subgroup_path(organization_id: organization.id, subgroup_id: @activity.group.id),class: 'button' %>

答案 1 :(得分:2)

您需要在路线中指定它。像这样:

get "/groups/:id/subgroup/:state" => "groups#subgroup", :as => :subgroup

并写下如下链接:

subgroup_path(@organization, @subgroup)

使用您正在使用的任何符号。

答案 2 :(得分:1)

建议不要在link_to / form_url中使用控制器和操作。我猜你有一个团体资源,我的意思是在routes.rb中像resources :groups。如果是这样,那么在那里添加一个集合方法:

resources :groups do
  #....
  post :associate_subgroup_with_org
end

现在您可以使用associate_subgroup_with_org_groups_path(p1: v1, p2: v2, .....)

或者您可以将一条命名路线定义为:

post 'groups/associate_subgroup_with_org', as: :associate_subgroup_with_org

现在您可以使用associate_subgroup_with_org_path(p1: v1, p2: v2, .....)

希望明确