标签: ruby-on-rails-6

在rails控制台中使用url_for?

当我尝试url_for在 Rails 控制台中使用时,我看到:

url_for(User.first.images.first)
NoMethodError: undefined method `url_for' for main:Object
Run Code Online (Sandbox Code Playgroud)

如何在 Rails 控制台中使用该方法?

ruby-on-rails ruby-on-rails-6

2
推荐指数
1
解决办法
2270
查看次数

如何在 Rails 6 或 Rails 7 alpha 引擎中使用 jqueryUI

如果有人能够展示在 Rails 6 或 Rails 7 Alpha 2 引擎中使用 jquery ui 所需的确切步骤,我将不胜感激。我无法让 importmap-rails 在 Rails 7 引擎中工作,也无法让 webpacker 在 Rails 6 引擎或 Rails 7 alpha 2 引擎中工作。给定一个名为 custom_page 的引擎,使用生成

rails plugin new custom_page --mountable --full
Run Code Online (Sandbox Code Playgroud)

我将 jquery-ui-rails 作为依赖项包含在 gemspec 中。

spec.add_dependency 'jquery-ui-rails'
Run Code Online (Sandbox Code Playgroud)

也许这应该是一个runtime_dependency?完整的依赖项列表是

  spec.add_dependency "rails", "~> 7.0.0.alpha2"

  spec.add_dependency 'new_ckeditor'

  spec.add_dependency 'ancestry'
  spec.add_dependency 'friendly_id', '>= 5.4.0'
  spec.add_dependency 'pg_search'

  spec.add_dependency 'carrierwave', '~> 2.0'
  spec.add_dependency 'carrierwave-imageoptimizer'
  spec.add_dependency 'sassc-rails', '~> 2.0.0'
  spec.add_dependency 'pg', '~> 1.1'
  spec.add_dependency 'jquery-rails'
  spec.add_dependency 'jquery-ui-rails'

  spec.add_development_dependency "puma"

  #Testing Gems
  spec.add_development_dependency …
Run Code Online (Sandbox Code Playgroud)

jquery-ui ruby-on-rails rails-engines ruby-on-rails-6 ruby-on-rails-7

2
推荐指数
1
解决办法
2656
查看次数

带有 ActiveStorage 附件的 Rails 引擎模型未定义方法“attachment_path”

我有一个 Rails 引擎和 Rails 应用程序,都运行 Rails 6.0.0.rc1。

引擎使用 ActiveStorage 附件定义模型,例如。

module Shop
  class Product < ApplicationRecord
    ...

    has_one_attached :image
    has_many_attached :images
  end
end
Run Code Online (Sandbox Code Playgroud)

在引擎视图和应用程序视图中使用此模型并尝试调用= url_for(product.image)会引发异常undefined method 'attachment_path' for #<#<Class:XXX>:XXX>product.image.attached?返回 true,因此附件可用。

这段代码是从 Rails 应用程序中提取的,它运行得很好。是否有针对 Rails Engine 模型附件的特殊路线助手或rails active_storage:install文档中未提及的除所需之外的任何设置?

ruby-on-rails rails-engines rails-activestorage ruby-on-rails-6

1
推荐指数
1
解决办法
1282
查看次数

Rails 6 ActionText rich_text_area 正常工作,在布局中渲染时不会出现

我正在渲染一个使用 ActionText 输入 rich_text_area 的表单,它是 Trix WYSIWYG 富文本编辑器的 Rails 实现。它一直工作得很好,直到我开始重构我的视图以使用布局,其中表单内容可以产生不同的表单。表单呈现良好,除了rich_text_areas 之外,删除使其成为布局所需的代码可使其恢复正常。我的代码如下。

\n\n

我正在使用以下代码将表单呈现为部分形式:

\n\n
<%= stylesheet_link_tag "form" %>\n<%= form_with model: @family, class: "form-group" do |f| %>\n\n  <%= label_tag(:banner_image, \'Select a Banner Image\')%>\n  <%= f.file_field :banner_image%>\n  <br>\n  <br>\n\n  <%= label_tag(:zh_family_name, \'Chinese Family Name\') %>\n  <%= f.text_field :zh_family_name %>\n  <br>\n  <br>\n  <%= label_tag(:en_family_name, \'English Family Name\') %>\n  <%= f.text_field :en_family_name %>\n  <br>\n  <br>\n  <%= label_tag(:en_summary, \'Summary\') %>\n  <%= f.text_field :en_summary %>\n  <br>\n  <br>\n  <%= label_tag(:zh_summary, \'Summary Chinese\') %>\n  <%= f.text_field …
Run Code Online (Sandbox Code Playgroud)

ruby ruby-on-rails trix ruby-on-rails-6 actiontext

1
推荐指数
1
解决办法
4581
查看次数

运行 build_stubbed factory 时,Rails 6 上的 Factory Bot 5 会引发验证错误

我有以下工厂

函数组.rb

FactoryBot.define do
  factory :function_group do
    factory :reports do
      # id 4
      name { "Reports" }
      functions {
        [find_or_create(:organization_report_function),
         find_or_create(:account_status_report_function)]
      }
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

函数.rb

FactoryBot.define do
  factory :function do
    factory :organization_report_function do
      name { "Org Report Function" }
      module_class { "organization_report_function" }
    end

    factory :account_status_report_function do
      name { "Acct Status Report" }
      module_class { "account_status_report_function" }
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

在我的 rails_helper.rb 中,我的代码如下所示

rails_helper.rb

require 'email_spec'
require 'capybara/rails'
require 'capybara/rspec'
require 'capybara-screenshot/rspec'

require 'capybara/poltergeist'

SERVER_PORT = 10000 + ENV.fetch('TEST_ENV_NUMBER', …
Run Code Online (Sandbox Code Playgroud)

rspec ruby-on-rails rspec-rails factory-bot ruby-on-rails-6

1
推荐指数
1
解决办法
844
查看次数

Rails 6 中的 webpacker 编译忽略了 application.js 文件

rails 6升级后的应用程序中rails 5,我有以下包文件

#app/javascript/packs/application.js
import "core-js/stable";
import "regenerator-runtime/runtime";
require("trix")
require("@rails/actiontext")
Run Code Online (Sandbox Code Playgroud)

#app/javascript/packs/application.scss
@import '../stylesheets/datatables.scss';
Run Code Online (Sandbox Code Playgroud)

服务器webpack-dev-server编译成功,但文件中包含的 javascriptapplication.js未运行。事实上,如果我更改require("trix")require("no_such_file")它不会导致编译错误,所以我的application.js被完全忽略。我该如何解决?

ruby-on-rails webpacker ruby-on-rails-6

1
推荐指数
1
解决办法
489
查看次数

Rails 6:未定义 Rails

我正在尝试使用 UJS 触发表单提交:

  <%= f.file_field :profile_image,
                   direct_upload: true,
                   accept: 'image/png,image/gif,image/jpeg',
                   onchange: "Rails.fire(this.form, 'submit')"
  %>
Run Code Online (Sandbox Code Playgroud)

但是,我在 JS 控制台中看到以下错误:

ReferenceError: Can't find variable: Rails
Run Code Online (Sandbox Code Playgroud)

应用布局文件指向应用JS包:

<%= javascript_pack_tag 'application', 'data-turbolinks-track': 'reload' %>
Run Code Online (Sandbox Code Playgroud)

我可以看到它通过控制台日志的输出加载:

console.log('Application pack loaded')
require("@rails/ujs").start()
require("turbolinks").start()
require("@rails/activestorage").start()
require("channels")
require("@rails/activestorage").start()
Run Code Online (Sandbox Code Playgroud)

据我了解,rails ujs 应该公开Rails对象。那正确吗?

为什么该Rails变量对浏览器不可用?我需要做什么来确保它是?

ruby-on-rails rails-ujs ruby-on-rails-6

1
推荐指数
1
解决办法
1235
查看次数

无法弄清楚如何在Rails中使用remote: true获取响应JSON

更新: 我发现问题是库依赖问题。我没有jquery-rails安装 gem,因此我不需要jquery-ujs在我的应用程序中使用该库。简而言之,jquery-ujs当我只有可用的内置rails-ujs功能时,我正在使用语法:( (face-palm)。感谢所有查看、提供和回答的人。


我觉得我正在做一些相当基本的事情,但由于某种原因我无法弄清楚我做错了什么。我能够通过使用帮助程序remote: true的选项,使用 AJAX 成功异步创建记录form_fordata但是,我尝试返回的简单 JSON 结构似乎在AJAX 响应的对象中不可用。当我运行时,console.log(data)undefined进入浏览器 js 控制台。

这是我的代码的相当准确的表示:

视图中的表单:

= form_for :thing, remote: true, html: { id: 'thing' } do |f|
      = f.text_field :name
      = f.submit 'submit'
Run Code Online (Sandbox Code Playgroud)

我的控制器代码:

def create
    @thing = Thing.new(thing_params)

    if @thing.save
      render json: { message: 'Thank you' }
    else
      render json: { message: 'oh no' } 
    end
end
Run Code Online (Sandbox Code Playgroud)

我的 JavaScript/jQuery:

$(document).ready(function(){
      $('#thing').on('ajax:success', …
Run Code Online (Sandbox Code Playgroud)

ajax ruby-on-rails ruby-on-rails-6

1
推荐指数
1
解决办法
1027
查看次数

如何在 Ruby on Rails 6 中使用带有 simple_form 的rich_text_area?

目前 simple_form 不支持带有 rich_text_area 输入字段的 ruby​​ on rails 6 action_text。所以目前我的输入字段在 posts/_form.html.haml 中看起来像这样:

= f.label :description
= f.rich_text_area :description
= f.error :description, class: 'text-danger'
Run Code Online (Sandbox Code Playgroud)

如何使其工作= f.input :description并具有富文本区域?

activerecord ruby-on-rails simple-form ruby-on-rails-6 actiontext

1
推荐指数
1
解决办法
1109
查看次数

Rails 会话,如何将 SameSite 设置为 Lax

在 Rails 6.0.3.1 中,有没有办法在不使用诸如安全标头 gem 之类的 gem 的情况下本机设置 Rails 会话 cookie 相同的站点属性?

ruby-on-rails session-cookies ruby-on-rails-6

1
推荐指数
1
解决办法
1912
查看次数