【问题标题】: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

它工作正常。

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

谢谢。

【问题讨论】:

    标签: ruby-on-rails model-view-controller view


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-12-08
      • 2017-06-13
      • 1970-01-01
      • 2013-08-08
      • 2018-05-23
      • 2017-02-16
      • 1970-01-01
      相关资源
      最近更新 更多