我无法理解创建方法的双重渲染错误。
问题是Create Method必须重定向到一个非特定的对象,因为Create Method的对象有一个多态类(评论 - 可评论)。
我希望创建一个评论,将其链接到一个对象(约会,人,...),并重定向到该对象(redirect_to @objeto),而不是重定向到评论索引。我该怎么办?
代码(comentarios_controller.rb)基本上是:
def create
#Verifica o objeto
@objeto = nil
tipo = params[:comentable_type]
case tipo
when "Comercial::Oportunidade"
@objeto = Comercial::Oportunidade.find_by_id(params[:comentable_id])
when "Comercial::Compromisso"
@objeto = Comercial::Compromisso.find_by_id(params[:comentable_id])
end
@comentario=Comercial::Comentario.new(params[:comercial_comentario])
@comentario.organizacoes<<current_empresa
@comentario.usuario = current_usuario
create! do |success, failure|
if success
@objeto.comentarios << @comentario
flash[:success] = I18n.t 'activerecord.successful.messages.created.m', :model => @comentario.class.model_name.human
redirect_to @objeto
else
flash.discard
end
end
end
使用Rails 3.2.2
答案 0 :(得分:1)
我并不熟悉继承资源(我发现作者不再推荐使用它),但似乎你在这里没有正确使用它。给出的与您的用法最相似的示例如下所示:
class ProjectsController < InheritedResources::Base
def update
update! do |success, failure|
failure.html { redirect_to project_url(@project) }
end
end
end
请注意它使用failure
参数的方式 - 它不是布尔值,并且可能需要采用如下所示的块:{ redirect_to ... }
。所以我认为你应该尝试重写这部分看起来更像:
create! do |success, failure|
success.html {
@objeto.comentarios << @comentario
flash[:success] = I18n.t 'activerecord.successful.messages.created.m', :model => @comentario.class.model_name.human
redirect_to @objeto
}
failure.html { flash.discard }
end