例如:我可以渲染'/ tags /:id / posts'吗?
如果我尝试渲染tag_posts_path(@tag)或其他一些方法,我会收到此错误或类似错误:
Missing partial /tags/1/posts...
在我的routes.rb中我有这个:
resources :tags do
resources :posts
end
答案 0 :(得分:1)
我已经和你一样的东西搞了一下
我实现了渲染正确的页面
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希望你渲染的不是路径而是某些页面(例如' new'或' show') 我只在我的ELSE遇到麻烦,我正在渲染' projects / show'。它似乎不是很正确的模板,因为它在原始渲染,没有任何CSS,但我希望出现错误。这是我现在能够为空注释呈现错误消息的唯一方法。
我只是通过绕过默认方式显示错误并将其放在简单的flash中来解决这个问题:
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
答案 1 :(得分:0)
如果我是对的,我认为你要找的是这样的
resources :tags do
resources :posts
end
您可以通过输入rake routes
我不太确定,但重新阅读你的问题,我认为你的意思是通过说
来呈现 render 'some nested route'
我提供的上述路线可以让你做这样的事情......
render tag_posts_path(@tag)
,它将在帖子路径中查找索引操作。同样,rake routes
显示了所有这些。
在谷歌上快速搜索嵌套路线会让你想到这一点。