Удаление вложенных объектов - PullRequest
0 голосов
/ 19 апреля 2011

У меня есть профиль, и у этого профиля много curso с (курсов). Я показываю все курсы, которые есть в профиле в show.html.erb этого профиля.

<% for curso in @profile.cursos %>
<li><%=h curso.nome %> - <%=h curso.universidade %><br>
Ingresso em: <%=h curso.ano_ingresso %> - Encerra em: <%=h curso.ano_termino %> 
<li>
<%= button_to 'Delete', { :action => "destroy", :id => curso.id },:confirm => "Are you sure?", :method => :delete %>

Таким образом, я могу показать все курсы, которые профиль имеет на своей странице, но button_to delete просто не работает. Я уже много чего перепробовал, но думаю, что потерян. Любая идея о том, как я могу создать ссылку или кнопку или что-нибудь, чтобы удалить курсы?

1 Ответ

4 голосов
/ 19 апреля 2011

В вашем файле маршрутов

resources :profiles do
    resources :courses
end

Тогда вы можете просто использовать метод link_to

<%= link_to "Delete", profile_course_path(profile, course), :method => :delete %>

Убедитесь, что вы предоставляете правильные переменные profile и course

Тогда в вашем courses_controller.rb вам нужно получить профиль.

before_filter :get_profile

def get_profile
    @profile = Profile.find(params[:profile_id]) if params[:profile_id]
end

def destroy
  @course = Corse.find(params[:id])
  @course.destroy
  redirect_to profile_courses_path(@profile)
end 

Это вернет вас к правильному URL профиля с его вложенными курсами.

обновление

Для новых курсов вы можете воспользоваться следующей ссылкой:

<%= link_to "New Course", new_profile_course_path(profile) %>

Это приведет вас к действию new в контроллере курсов.

Вы должны прочитать вложенные формы здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...