我有一个包含“名称”常规输入字段和“内容”CKeditor 文本区域的表单。如此处所述,我可以填写表格,如果我停在这里,我可以看到测试数据库中正确更新的“名称”和“内容”列。美好的。
现在,如果我这样做:
template = ContractTemplate.all.last
puts "#{template.name}" # => "template_name"
puts "#{template.content}" # => "<p>template_content</p>"
然后问题开始了,如果我尝试更新这两个属性(仍然使用 Capybara),我现在总是依赖于“创建”操作中保存的值,尽管它们已正确更新到数据库中。就像那里没有更新值一样。我试过做 ContractTemplate.reload ,但它不起作用。
完整规格是这样的:
it 'should edit a contract template', :js => true do
visit contract_templates_path
click_link "Add"
fill_in "contract_template_name", :with => "test_template_name"
fill_in_ckeditor "contract_template_content", :with => "test_template_content"
click_button "Save"
template = ContractTemplate.all.last
template.name.should eq("test_template_name") # pass, content created
template.content.should eq("<p>\r\n\ttest_template_content</p>\r\n") # pass
visit contract_template_path(template.id)
fill_in "contract_template_name", :with => "edited_test_template_name"
fill_in_ckeditor "contract_template_content", :with => "edited_test_template_content"
click_button "Save"
template.name.should eq("edited_test_template_name") # Fail, because == "test_template_name"
template.content.should eq("<p>\r\n\tedited_test_template_content</p>\r\n") # Fail, not updated too
end
我的方法可能是错误的,但由于“内容”属性是使用 wisiwig 编辑器填充的,所以我看不到任何其他方法来测试保存操作是否真的更新了名称和内容......顺便说一句,在我可以在其中显示 textarea 的结果的应用程序,它将全部呈现为 PDF。
有人可以帮助我吗?