我迷路了,我不知道我做错了什么!我有4个单选按钮和一个隐藏字段(值=“1”)。单击第二个radiobutton时,隐藏字段的值将更改为2,依此类推。这适用于js函数。
当选择不同的单选按钮时,将显示不同的div。现在,当我试图在控制器中获取隐藏字段的值时,它总是返回nil。
以下是代码:
(radiobuttons,hiddenfield和one div)
<div>
<%= form_tag patients_path do %>
<%= radio_button_tag 'searchRBN', 'patient', true, :onchange => "checkRadioButton()" %>
<%= label_tag :byPatient_patient, "Patient" %>
<%= radio_button_tag 'searchRBN', 'staff', false, :onchange => "checkRadioButton()" %>
<%= label_tag :byStaff_staff, "Staff" %>
<%= radio_button_tag 'searchRBN', 'ocmw', false, :onchange => "checkRadioButton()" %>
<%= label_tag :byOcmw_ocmw, "OCMW" %>
<%= radio_button_tag 'searchRBN', 'mutuality', false, :onchange => "checkRadioButton()" %>
<%= label_tag :byMutuality_mutuality, "Mutuality" %>
<%= hidden_field_tag :hidden_one, "1" %>
<% end %>
</div>
<div id="searchByPatient">
<%= form_tag patients_path, :method => 'get' do %>
<p>
<%= text_field_tag :search1, params[:search1] %>
<%= submit_tag "Search", :name => nil %>
</p>
<% end %>
</div>
def index
@staff_all = Staff.all
@ocmw_all = Ocmw.all
@mutuality_all = Mutuality.all
debugger
if params[:hidden_one] == '1'
@patients = Patient.searchByName(params[:search1])
elsif params[:hidden_one] == '2'
@patients = Patient.searchByStaff(params[:search2])
else
@patients = Patient.all
end
end
答案 0 :(得分:2)
这是因为你有两种形式。当您提交第二个表单时,它不会发送第一个表单的字段。如果您将所有内容放在一个表单中,它将按预期工作。
答案 1 :(得分:0)
仅使用单一表格:
另外,作为一种解决方法,在单个表单中使用两个提交标记:
区分具有params[:action]
例如:
<%= form_for :attachment_metadata, :url=>{:action=>'delete_files'}, :html=>{:onsubmit=> "return confirm('Are you sure, you want to delete selected files?');",:multipart => true} do |f| %>
<table>
..........Some stuff here..........
</table>
<%= submit_tag 'Reprocess', :class =>'button' %>
<%= submit_tag 'Remove', :class =>'button' %>
<% end %>
params[:commit]
可以区分两个提交标记的操作。
@action = params[:commit]
如果单击“重新处理”按钮,它会将@action值作为“重新处理”,如果单击“删除”按钮,则会显示“删除”值,
然后你会得到你的价值观。