所以我对控制器中的 if else 语句有疑问。我的页面上有 4 个单选按钮和一个隐藏字段。还有4个DIV,一次只能看到一个。当检查了另一个RadioButton时,显示了另一个DIV。这应该像一个“复杂”的搜索界面一样工作。在隐藏字段中,我插入了一个从 1 到 4 的值(取决于选中的单选按钮)。在控制器中,我正在查看隐藏字段的值,并且我的功能应该相应地改变。我的问题是它不起作用。我尝试了几种不同的方法,但没有找到我的问题的答案。
这是我的代码
看法:
<div>
<%= 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" %>
</div>
<%= hidden_field_tag(:hidden_one, "1") %>
<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>
<div id="searchByStaff" class="notVisible">
<%= form_tag patients_path, :method => 'get' do %>
<%= text_field_tag :search2, params[:search2] %>
<%= submit_tag "Search", :name => nil %>
<% end %>
</div>
控制器:
def index
@staff_all = Staff.all
@ocmw_all = Ocmw.all
@mutuality_all = Mutuality.all
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
在我的模型中:
def self.searchByName(search)
if search
find(:all, :conditions => ['name LIKE ?', "%#{search}%"])
else
find(:all)
end
end
def self.searchByStaff(search)
if search
find(:all, :conditions => ['marriedTo LIKE ?', "%#{search}%"])
else
find(:all)
end
end
马蒂亚斯 A.