2012-12-13 79 views
-1

例如:我可以渲染'/ tags /:id/posts'吗?Rails和渲染嵌套资源

如果我尝试呈现tag_posts_path(@tag)或一些其他的方式,我得到这个或类似的错误:

Missing partial /tags/1/posts... 

在我的routes.rb我有这样的:

resources :tags do 
    resources :posts 
end 
+0

请详细说明您的问题。你想要渲染什么? –

+0

我认为这很明显。在'/ tags/1'视图中,我可以简单地渲染eg.'tags/new',但是我找不到'/ tags/1/edit'或'/ tags/1/posts'的呈现方式。当我为谷歌“渲染嵌套路线”,许多人正试图解决这个问题,但没有人知道,所以我试过这个论坛。但没有运气 –

+0

如果是的话,不会有2个降价。无论如何,如果你发布你的routes.rb文件,这将是明智的。 –

回答

1

我stucked有点用的东西像你

我取得了渲染正确的页面

def create 
    @project = Project.find(params[:project_id]) 
    @comment = @project.comments.build(comment_params) 
    if @comment.save 
     flash[:success] = "Chingon!" 
     redirect_to @project 
    else 
     render 'projects/show' 
    end 
    end 

我的路线是这样的:

resources :projects do 
    resources :comments, only: [:create, :destroy] 
end 

Rails的恭候您的光临渲染不是路径,但一些页面(如'新'或'显示') 我只在我的ELSE渲染'projects/show'时遇到了麻烦。它看起来不是很正确的模板,因为它在原始情况下渲染,没有任何CSS,但有我预计会出现的错误。现在,我可以为空评论呈现错误消息。

我走了这个问题简单地绕过默认的方式显示错误,并将其放置在简单的闪存这样的:

def create 
    @project = Project.find(params[:project_id]) 
    @comment = @project.comments.build(comment_params) 
    if @comment.save 
     flash[:success] = "New comment here, bro" 
     redirect_to @project 
    else 
     redirect_to @project 
     flash[:error] = flash_error_message(@comment) 
    end 
end 


def flash_error_message(arg) 
    "The form contains #{arg.errors.count} error: #{arg.errors.full_messages.join(', ')}"  
end 
+0

我整理了一下,看看我上面的更新 – dimitryeurope

0

如果我是正确的,我想你在找什么东西像这样

resources :tags do 
    resources :posts 
end 

你可以看到什么样的网址或途径的T他产生在rake routes

打字我真的不知道,但是,重新阅读你的问题,我想你指的渲染说

render 'some nested route'

我提供的上述路线将允许你做某件事像这样...

render tag_posts_path(@tag)这将在短期内寻找索引行动,因为它的帖子路径。 rake routes再一次显示了这一切。

在谷歌上嵌套路线的快速搜索会导致你这样做。

Nested Routes

+0

谢谢你的帮助。这正是我想要实现的。但“渲染tag_posts_path(@tag)”给我错误“缺少部分/标签/ 1 /帖子...”和许多其他方式和尝试给我类似的错误。我已经在谷歌上花了几天时间,谢谢。 –

+0

你能否用你的整个错误更新你的问题?它会帮助我们弄清楚问题究竟在哪里。看起来你没有必要的视图来渲染。如果您想获得更多帮助,请使用错误输出和“rake routes”输出更新您的问题。没有您的问题或更多信息的具体信息,我们无法帮助您。 –

+0

我患有相同的routes.rb相同的问题。有任何想法如何解决这个问题?事实上,渲染不起作用,这将是调用渲染错误等常规方法。它确实与redirect_to一起工作,但这不是我们想要的。 – froginvasion