【问题标题】:return no stopping controller action for remote call远程调用不返回停止控制器操作
【发布时间】:2018-08-05 18:23:17
【问题描述】:

我在向控制器发送两个参数的表单时遇到问题。如果对象的update 失败,我希望不会触发erb.jstemplate。

我在操作结束时添加了return,但仍会触发视图。

她是我的控制器的一部分,我认为它负责对视图进行操作:

if @object.update(some_params)

...
  respond_to do |f|
    f.html {redirect_to some_path_here}
    f.js
  end
end

return

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-5 ruby-2.5


    【解决方案1】:

    会发生这种情况,因为根据convention over configuration Rails 会自动呈现动作视图,如果没有明确指定的话。

    为了避免渲染,如果@object 没有成功更新,选项之一是设置head:

    if @object.update(some_params)
    
    ...
      respond_to do |f|
        f.html {redirect_to some_path_here}
        f.js
      end
    else
      head :unprocessable_entity
    end
    

    【讨论】:

    • 实际上在if 语句中,视图被正确渲染。 return 并不是真正有效的条件之外。不幸的是,按照您的建议更改 respond_to 方法无效。 (其实我是希望视图不被默认渲染,只有条件语句成功的情况下才可以......也许不是很好的设计)
    • @Maxence 啊,不明白你的目的。那么您可以指定 head 而不是您尝试过的 return 关键字。更新了我的答案
    • 谢谢。但是现在视图没有呈现,但如果条件为真(和对象传递的update)也不会呈现。也许我应该在 respond_to 中显式渲染视图并添加 and return ? (抱歉对head方法不太熟悉)
    • 谢谢,就像一个魅力。虽然为什么return 不起作用,不得不玩头?
    • 我提供的链接实际上解释了它guides.rubyonrails.org/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多