Rails 6 - рендеринг JS не удался - PullRequest
1 голос
/ 26 марта 2020

Я запустил новый проект на Rails 6. Я столкнулся с проблемой рендеринга JS файла.

    def create
      @member = Member.new(member_params)

      if @member.save
        redirect_to members_path
      else
        render js: :new
      end
    end

После неудачного сохранения действий я хочу перечитать новый. js .erb файл, но вставил получить странную ошибку, не связанную с файлами моего проекта.

TypeError (no implicit conversion of Symbol into String):

body.each do |part|
  parts << part
  (digest ||= Digest::SHA256.new) << part unless part.empty?
end

[digest && digest.hexdigest.byteslice(0, 32), parts]

rack (2.2.2) lib/rack/etag.rb:69:in `<<'
rack (2.2.2) lib/rack/etag.rb:69:in `block in digest_body'
...
actionpack (6.0.2.1) lib/action_dispatch/middleware/host_authorization.rb:83:in `call'
webpacker (4.2.2) lib/webpacker/dev_server_proxy.rb:23:in `perform_request'
rack-proxy (0.6.5) lib/rack/proxy.rb:57:in `call'
railties (6.0.2.1) lib/rails/engine.rb:526:in `call'
puma (4.3.3) lib/puma/configuration.rb:228:in `call'
puma (4.3.3) lib/puma/server.rb:682:in `handle_request'
puma (4.3.3) lib/puma/server.rb:472:in `process_client'
puma (4.3.3) lib/puma/server.rb:328:in `block in run'
puma (4.3.3) lib/puma/thread_pool.rb:134:in `block in spawn_thread'

Кроме того, я обнаружил, что это происходит каждый раз при использовании render js: anyfile

окружения. js

const { environment } = require('@rails/webpacker');
const webpack = require('webpack');

environment.plugins.append('Provide', new webpack.ProvidePlugin({
  $: 'jquery',
  jQuery: 'jquery',
  Popper: ['popper.js', 'default']
}));

module.exports = environment;

Кто-нибудь сталкивался с этой проблемой?

1 Ответ

1 голос
/ 26 марта 2020

Я думаю, что вы не делаете это правильно. Попробуйте как ниже -

respond_to do |format|
  if @member.save
    return redirect_to members_path
  else
    format.js { render :new }
  end
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...