我正在使用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
。有人可以帮助我正确理解语法吗?
答案 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, .....)
希望明确