我知道之前已经问过这个问题,通常它与控制器中的更新方法有关。我已经经历过这一点,似乎并不是我的问题所在。我认为我的视图文件和提交标记的行相关。我尝试过一些东西但是一切都只是给我错误的参数数量。任何建议都会很棒!
查看:
= form_for [:admin, @diagnostic], url: admin_diagnostic_path(@diagnostic), html: {method: :put} do |f|
.field
= label_tag :notes
= f.text_field "notes"
= submit_tag t('.Save'), @diagnostic.data["Save"]
.field
= link_to 'show', admin_diagnostics_path
控制器:
def update
@diagnostic = DiagnosticInfo.find(params[:id])
if @diagnostic.update_attributes(params[:diagnostic_info])
redirect_to admin_diagnostic_path, notice: 'Successfully updated.'
else
render action: "edit"
end
end
测试:
it "updates a diagnostic report" do
diagnostic_info = FG.create(:diagnostic_info)
diagnostic_info.save!
visit edit_admin_diagnostic_path(diagnostic_info)
fill_in 'diagnostic_info_notes', with: "test notes"
click_button "Save"
page.should have_content("Saved")
page.should have_content("test notes")
end
答案 0 :(得分:1)
你的问题确实是提交标签。 它应该像这样使用:
submit_tag("display value", html_options)
其中 html_options 是包含以下内容的哈希:
{ class: 'my_class', disabled: true }
因此,请更改您的submit_tag,它会起作用。 您的观点应如下所示:
= form_for [:admin, @diagnostic], url: admin_diagnostic_path(@diagnostic), html: {method: :put} do |f|
.field
= label_tag :notes
= f.text_field "notes"
= submit_tag @diagnostic.data["Save"], class: "save"
.field
= link_to 'show', admin_diagnostics_path
修改强>: 我想你甚至可以在Rails中缩短你的观点:
= form_for [:admin, @diagnostic] do |f|
.field
= f.label{ for: :notes }
= f.text_field "notes"
= f.submit @diagnostic.data["Save"], class: "save"
.field
= link_to 'show', admin_diagnostics_path
原因是,如果您坚持标准的CRUD操作和命名约定,form_for会自动生成正确的路径和方法
结束编辑
不确定@diagnostic变量中有什么,但我想你想让按钮显示其中的内容?