Мои модели настроены следующим образом:
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
My 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
У меня есть ресурсы: членство в моих маршрутах, чтобы он мог найти действие 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 => "членство"}
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 ", controller =>" членство "}
членство GET /memberships/:id(.:format) {: action => "show",: controller => "memberships"}
PUT /memberships/:id(.:format)‹:action=>"update ",: controller =>" Memberships "}
DELETE /memberships/:id(.:format) {: action => "destroy",: controller => "memberships"}
Кто-нибудь видит ошибку моих путей?