我首次使用2个资源,部门(部门)和会员创建了一个非常基本的rails应用程序。我相信我已正确使用嵌套资源,但由于某些原因在运行rails服务器之后,父资源的:id未正确生成/传递。 Root是depts #index,从这里我可以使用在新视图和编辑视图中呈现的_form.haml来做新的和编辑。但是,当我执行/ depts / 3时,我收到“无法找到id = 3的dept”的错误。点击编辑索引会给我/ depts / 63 /编辑URL - 我不确定这个id = 63来自哪里。尝试通过在URL中键入/ dept / 63来“显示”操作不起作用。我一开始就创建了Depts,让它与所有的动作和视图一起工作,因为我添加了会员资源,所以出了问题。
的routes.rb
resources :depts do
resources :members
end
depts_controller.rb
def index
@depts = Dept.all
respond_to do |format|
format.html
format.json { render :json => @depts }
end
end
def show
@dept = Dept.find(params[:dept_id])
respond_to do |format|
format.html
format.json { render :json => @dept }
end
end
def new
@dept = Dept.new(params[:dept])
respond_to do |format|
format.html
format.json { render :json => @dept }
end
end
def create
@dept = Dept.new(params[:dept])
respond_to do |format|
if @dept.save
format.html { redirect_to :action => 'index' }
format.json { render :json => @dept }
else
format.html { render :action => 'new' }
format.json { render :json => @dept }
end
end
end
def edit
@dept = Dept.find(params[:id])
end
def update
@dept = Dept.find(params[:id])
respond_to do |format|
if @dept.update_attributes(params[:dept])
format.html { redirect_to :action => 'index'}#, :id => @dept }
format.json { render :json => @dept }
else
format.html { redirect_to :action => 'edit' }
format.json { render :json => @dept }
end
end
end
def destroy
@dept = Dept.find(params[:id])
@dept.destroy
respond_to do |format|
format.html { redirect_to :action => 'index' }
format.json { render :json => @dept }
end
end
end
show.haml
%p= @dept.name
%p= link_to "back", {:action => 'index'}
index.haml
%h1 DEPARTMENTS
%ol
- @depts.each do |d|
%li= link_to d.name
%p= link_to 'edit department', edit_dept_path(d)
%p= link_to 'get rid of department!', d, :method => :delete, :id => d.id
%br
%p= link_to "ADD A NEW DEPARTMENT", new_dept_path
答案 0 :(得分:0)
:
@dept = Dept.find(params[:dept_id])
为:
@dept = Dept.find(params[:id])
并在新方法更改中:
@dept = Dept.new(params[:dept])
只是:
@dept = Dept.new