そのため、コントローラーの if else ステートメントに問題があります。ページに 4 つのラジオボタンと 1 つの非表示フィールドがあります。一度に 1 つしか表示できない 4 つの div もあります。別のラジオボタンをオンにすると、別の 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.