我正在尝试编写一个 RSpec 系统测试,该测试涉及在页面上填写 ActionText / Trix 字段。
似乎此处ActionText::SystemTestHelper定义的可用于帮助完成此任务,但到目前为止我还没有成功实现它。
我的 RSpec 测试如下所示:
# spec/system/add_job_posting_spec.rb
require 'rails_helper'
RSpec.describe 'adding a job posting', type: :system do
let(:user) { FactoryBot.create :user }
before do
login_as(user)
visit new_job_posting_path
end
context 'with valid information' do
let(:valid_job_posting) { FactoryBot.create :job_posting }
scenario 'creates a job posting', js: true do
fill_in 'Title', with: valid_job_posting.title
fill_in_rich_text_area 'Description', with: 'Job Info'
click_button 'Submit'
expect(page).to have_content 'Job was successfully created.'
end
end
end
Run Code Online (Sandbox Code Playgroud)
我还尝试创建一个 RSpec 支持文件
# spec/support/action_text.rb …Run Code Online (Sandbox Code Playgroud) 我希望在Rails 4应用程序中构建一组简单的计算器,我对如何设置模型和控制器感到有点失落.
在这个例子中,我有一系列计算器,它们具有非常相似但在某些情况下略有不同的输入/变量和略有不同的计算方法.
我的第一个尝试是简单地创建一个没有模型的计算器控制器,但很快就会丢失我将处理诸如形式参数和计算逻辑之类的东西.
鉴于计算器需要一些稍微不同的输入和计算方法,创建模型对我来说也没什么意义.
最后,在这种情况下,创建多个模型似乎也是一种非常混乱的方法.
所以考虑到所有这些,我想知道是否有人能告诉我如何处理这个问题的Rails方式.如果有助于获得更多信息,我希望建立与以下电子表格相同的方法:http://www.widerfunnel.com/proof/roi-calculators
任何帮助将非常感谢!
ruby activerecord ruby-on-rails strong-parameters ruby-on-rails-4
我在生产中收到的错误只是说:
TypeError (no implicit conversion of Symbol into String):
app/controllers/products_controller.rb:15:in `create'
Run Code Online (Sandbox Code Playgroud)
以下是products_controller.rb文件中的相关代码(请注意,相关行是下面的第2行)
def create
@product = @category.products.build(product_params)
if @product.save
flash[:success] = "Product successfully created"
redirect_to [@category, @product]
else
flash[:alert] = "Product not created"
render 'new'
end
end
private
def product_params
params.require(:product).permit(:name, :description, :url, :category_id, :picture, :price, :social_image)
end
Run Code Online (Sandbox Code Playgroud)
此代码目前在开发和测试环境中工作正常,之前在生产中工作(将解释自上次上一个工作生产版本以来的更改).我使用了diff工具来确认Gemfile.lock在本地机器和生产机器之间是相同的,以消除这个方面.
注意:我之前使用Paperclip gem进行文件上传工作,如图片参数中所示,但我最近为此模型添加了第二个文件上传(:social_image),并通过aws-sdk gem将上传方法切换到Amazon S3而不仅仅是生产服务器.另外,我已确认development.rb和production.rb之间的所有相关设置都是正确的.
请求的参数可以在下面找到:
{"utf8"=>"?",
"authenticity_token"=>"yJJ1HwLZz9oDmsfUfN87DATCe+HC9IBhYVBddRvm4=",
"product"=>{"name"=>"Heineken Style USB Flash Drive",
"description"=>"Sample Description.",
"url"=>"http://www.amazon.com/",
"category_id"=>"1",
"price"=>"7.99",
"picture"=>#<ActionDispatch::Http::UploadedFile:0x00000004986260 @tempfile=#<Tempfile:/tmp/RackMultipart20131013-3068-fyjvy2>,
@original_filename="heineken-usb-drive-stock.jpg",
@content_type="image/jpeg",
@headers="Content-Disposition: form-data; name=\"product[picture]\"; filename=\"heineken-usb-drive-stock.jpg\"\r\nContent-Type: image/jpeg\r\n">,
"social_image"=>#<ActionDispatch::Http::UploadedFile:0x000000049861c0 @tempfile=#<Tempfile:/tmp/RackMultipart20131013-3068-1glzf9p>,
@original_filename="heineken-usb-drive.png",
@content_type="image/png", …Run Code Online (Sandbox Code Playgroud)