繁体   English   中英

在has_many =>通过关联的关系中的Rails 3路由错误

[英]Rails 3 routing error in a relationship in a has_many => through association

我的模型设置如下:

 class User
 has_many :memberships, :dependent => :destroy
 has_many :groups, :through => :memberships

 Class Group
 has_many :memberships, :dependent => :destroy
 has_many :users, :through => :memberships

 Class Membership
 attr_accessible :user_id, :group_id
 belongs_to :user
 belongs_to :group

我的MembershipController#create

def create
  @membership = current_user.memberships.build(:group_id => params[:group_id])
  if @membership.save
    flash[:notice] = "You have joined this group."
    redirect_to :back
  else
    flash[:error] = "Unable to join."
    redirect_to :back
  end
end

我的路线中有资源:memberships,因此它可以找到create动作。

最后,在“ Group#show”操作中,我希望用户能够加入一个组。 所以我创建了这个form_tag

<%= form_tag(membership_path) do %>
    <%= hidden_field_tag @group.id %>
    <%= submit_tag "Join Group"%>
<% end %>

这将返回以下错误:

Routing Error

No route matches [POST] "/memberships/1"

我已经尝试过耙路,以了解我在这里所缺少的东西:

成员资格GET /memberships(.:format){:action =>“ index”,:controller =>“ memberships”} POST / memberships(。:format){:action =>“ create”,controller =>“ memberships”} new_membership GET /memberships/new(.:format){:action =>“ new”,controller =>“ memberships”} edit_membership GET /memberships/:id/edit(.:format){:action=>"edit“,控制器=>“成员资格”}

成员资格GET /memberships/:id(.:format){:action =>“ show”,:controller =>“ memberships”} PUT /memberships/:id(.:format){:action=>"update“,: controller =>“ memberships”}删除/memberships/:id(.:format){:action =>“ destroy”,:controller =>“ memberships”}

有人看到我的方式的错误吗?

您不想发布到memberships_path而不是membership_path吗? 似乎错误表明它找不到成员资格的POST路由,原因是实际上:POST的:membership实际上没有路由,:only成员身份。

我快速浏览了一下; 不应<%= form_tag(membership_path) do %><%= form_tag(@membership) do %> '或<%= form_tag(membership_path(@membership)) do %>

路径是“ new_membership”对吗? new_membership_path(如果您正在执行form_tag),或者您始终可以使用form_for并通过视图中的局部渲染它​​。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM