0

そのため、コントローラーの 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.

4

1 に答える 1