0

我有一个基本的网络应用程序,其表单使用ActionText. 进行更改时,有一个 Trix 侦听器,它通过 AJAX 调用我的控制器(自动保存!)。控制器如下所示:

  def update
    respond_to do |format|
      if @model.update(model_params)
        format.json { render json: @model }
      else
        format.json { render json: @model.errors, status: :unprocessable_entity }
      end
    end
  end

这在 Rails 6.1 alpha 上工作得非常好,但是由于更新到 Rails 6.1 RC1,相同的代码导致了这个错误:

ActionView::MissingTemplate (Missing partial action_text/content/_layout with 
{:locale=>[:en], :formats=>[:json], :variants=>[], :handlers=>[:raw, :erb, :html, :builder, :ruby]}. 

有没有人能够解释为什么会这样?我曾尝试挖掘源代码,但我并不聪明。我也想知道它是否与这个问题有关。

提前致谢。

4

1 回答 1

0

我已经解决了这个问题如下。最初我format: :jsonform_with声明中:

<%= form_with(model: @model, format: :json) do |form| %>

这在 Rails 6.1 Alpha 中有效,但在 RC1 中无效。从代码中删除格式解决了这个问题。

<%= form_with(model: @model) do |form| %>

POST 请求现在以 JS 而不是 JSON 的形式通过,这使问题消失了。

Processing by MyController#update as JS
于 2020-11-10T08:35:41.523 回答