删除嵌套对象

时间:2011-04-19 01:30:41

标签: ruby-on-rails ruby-on-rails-3 nested-forms

我有个人资料,此个人资料有很多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 个答案:

答案 0 :(得分:4)

在您的路线文件

resources :profiles do
    resources :courses
end

然后你可以使用link_to方法

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

确保提供正确的变量profilecourse

然后在您的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 

这将带您回到正确的配置文件网址及其嵌套课程。

更新

对于新课程,您可以使用以下链接:

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

这将带您进入课程控制器中的new操作。

您应该阅读嵌套表单here