[英]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.