0

所以我对控制器中的 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.

4

1 回答 1

1

我认为您的隐藏字段在您的表单标签之外,因此它永远不会提交给服务器。

另一种解决方案是简单地为每个搜索表单放置一个隐藏字段,您必须在服务器上识别相应的搜索表单。

例子:

<div id="searchByPatient">
<%= form_tag patients_path, :method => 'get' do %>
    <%= hidden_field_tag :search_type, :search_by_patient %>
    <p>
        <%= text_field_tag :search1, params[:search1] %>
        <%= submit_tag "Search", :name => nil %>
    </p>
<% end %>
</div>
于 2013-04-04T11:00:01.313 回答