1

我正在使用 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。有人可以帮我弄对语法吗?

4

3 回答 3

8

您可以制作这样的路线:

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' %>
于 2013-06-21T05:06:38.317 回答
2

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

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

并编写如下链接:

subgroup_path(@organization, @subgroup)

使用您使用的任何符号。

于 2013-06-21T03:48:48.367 回答
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, .....)

希望它清楚

于 2013-06-21T05:26:45.853 回答