2011-04-10 30 views
0

我的项目允许家庭页面有多个故事。模型包括关系 - “家庭有许多故事”和“故事属于家庭”。在routes.rb中文件我有以下几点:脚手架与belongs_to和has_many的关系:link_to“编辑”和“销毁”不工作的路径

resources :families do 
    resources :stories 
    end 

从而为故事控制器以下路线:

family_stories GET /families/:family_id/stories(.:format)   {:action=>"index", :controller=>"stories"} 
        POST /families/:family_id/stories(.:format)   {:action=>"create", :controller=>"stories"} 
    new_family_story GET /families/:family_id/stories/new(.:format)  {:action=>"new", :controller=>"stories"} 
edit_family_story GET /families/:family_id/stories/:id/edit(.:format) {:action=>"edit", :controller=>"stories"} 
     family_story GET /families/:family_id/stories/:id(.:format)  {:action=>"show", :controller=>"stories"} 
        PUT /families/:family_id/stories/:id(.:format)  {:action=>"update", :controller=>"stories"} 
        DELETE /families/:family_id/stories/:id(.:format)  {:action=>"destroy", :controller=>"stories"} 

下面是相关的控制器方法:

def edit 
    @story = @family.stories.find(params[:id]) 
    end 

    def destroy 
    @story = @family.stories.find(params[:id]) 
    @story.destroy 
    redirect_to family_stories_url, :notice => "Successfully destroyed story." 
    end 

对于index.html.erb由漂亮脚手架生成的代码没有考虑到关系,而“显示”,“编辑”和“销毁”的链接不起作用。经过一番研究,我修改了代码,这些链接如下:以取代原来的“故事”变量时

<% for story in @stories %> 
    <tr> 
     <td><%= story.title %></td> 
     <td><%= story.body %></td> 
     <td><%= link_to "Show", [@family, story] %></td> 
     <td><%= link_to "Edit", edit_family_story_path([@family, story]) %></td> 
     <td><%= link_to "Destroy", [@family,story], :confirm => 'Are you sure?', :method => :delete %> </td> 
    </tr> 
    <% end %> 

“显示”链接工作正常“[@family,故事]”。 “销毁”和“编辑”链接不适用于类似的替换。

“Destroy”链接没有产生任何错误,但与“Show”链接相同 - 记录未被删除,而是显示(确认对话框从不显示。)“Edit”链接生成以下错误:

"No route matches {:action=>"edit", :controller=>"stories", :family_id=>\#[Story id: 1, title: "story01 for family01", body: "body01 for story01 for family01", created_at: "2011-04-09 22:55:14", updated_at: "2011-04-09 22:55:14", family_id: 1]}" 

的[@家庭,故事]构建行之有效的 “显示” 链接。为什么它不适用于“编辑”和“销毁”链接?我如何修改它们以正确工作?

回答

0

这是由于JavaScript配置冲突造成的。

我使用的rails应用程序构建器将我的jquery.js文件放在“public/javascript”文件夹中,但是在一个文件夹内调用jquery(我不得不将它向上移动一层。)2)config/application。 rb文件有两个javascript配置行。我删除了一个,并确保第二个指向上面提到的jquery.js文件。随着那些改变所有工作