渲染错误的视图

Posted

技术标签:

【中文标题】渲染错误的视图【英文标题】:rendering wrong view 【发布时间】:2011-02-24 10:57:25 【问题描述】:

有一个简单的代码:

def new
  if !logged_in?
    respond_to do |format|
      format.js render "new_failed"
      return
    end
  end

  article = Article.find params[:id]
  @comment = article.comments.build

  respond_to do |format|
    format.js
  end
end

当用户未登录时,应该呈现“new_failed”,但实际上,呈现的是“new”动作。

我什么时候输入logged_in?到方法结束:

def new
  if !logged_in?
    respond_to do |format|
      format.js render "new_failed"
      return
    end
  end

  article = Article.find params[:id]
  @comment = article.comments.build

  respond_to do |format|
    format.html # new.html.erb
    format.js
  end
end

它工作正常。

这是什么奇怪的行为?谁能解释一下?

谢谢。

【问题讨论】:

【参考方案1】:

问题是respond_to内部的return。 如果你这样做,它可以工作(在这里)。

if !logged_in?
  respond_to do |format|
    format.js render "new_failed"
  end
  return
end

【讨论】:

以上是关于渲染错误的视图的主要内容,如果未能解决你的问题,请参考以下文章

自定义标签渲染器在 Xamarin iOS 的滚动列表视图中显示错误的文本样式

渲染基本的 HTML 视图?

UIImagePickerController 错误:对尚未渲染的视图进行快照会导致 iOS 7 中的快照为空

渲染故事板时出现 IBDesignable 错误

渲染多个 EmberJS 视图时断言失败

渲染布局和视图,rails