2010-12-02 2 views
0

Я создал приложение ruby ​​on rails, которое позволяет пользователям отслеживать свои тренировки. Пользователь has_many тренировок. Кроме того, Пользователь может создать ящик (тренажерный зал), если он является владельцем тренажерного зала. Затем пользователи могут связываться с этим полем через ресурс Membership.Удаление связанной записи через remote_form

Я создаю эту ассоциацию для CURRENT_USER с дистанционной формы в /views/boxes/show.html.erb:

<% remote_form_for Membership.new do |f| %> 
    <%= f.hidden_field :box_id, :value => @box.id %> 
    <%= f.hidden_field :user_id, :value => current_user.id %> 
    <%= submit_tag "I am a member of this box" , :class => '' %> 
<% end %> 

Теперь я хочу, чтобы дать current_user возможность удалить их ассоциации. Как я могу структурировать ссылку/форму, и как должно выглядеть действие memberhips_controller?

Ниже приведен список моих ассоциаций, если это поможет: Пользователь

class User < ActiveRecord::Base 
    has_many :boxes 
    has_many :workouts, :dependent => :destroy 
end 

Workout

class Workout < ActiveRecord::Base 
    belongs_to :user 
    belongs_to :box 
end 

Box

class Box < ActiveRecord::Base 
    belongs_to :user 
    has_many :users, :through => :memberships 
    has_many :workouts, :through => :users 
    has_many :memberships 
end 

Членство

class Membership < ActiveRecord::Base 
    belongs_to :user 
    belongs_to :box 
end 

ответ

0

После того, как вы сделали изменения, предложенные here, и при условии, что вы получили членство для CURRENT_USER и поле, используя следующий код,

@membership = current_user.memberships.for_box(box).first 

создать ссылку для пользователя, чтобы удалить членство в следующим образом.

link_to 'Delete Membership', membership_path(@membership), :method => :delete 

Контроллер членства должен иметь метод уничтожения, который выглядит следующим образом.

def destroy 
    @membership = Membership.find(params[:id]) 
    @membership.destroy 
end 

Это при условии, что ваш контроллер членства является успокоительным и у вас есть map.resources :memberships в маршрутах.

+0

Можете ли вы дать мне некоторые особенности в форме? Я попробовал просто изменить `<% remote_form_for Membership.new do | f | %> `to` <% remote_form_for Membership.destroy do | f | %> `, но это дает неправильное количество аргументов error. – bgadoci 2010-12-02 06:14:10

Смежные вопросы