繁体   English   中英

Ruby on Rails:如果控制器中还有其他问题

[英]Ruby on rails: If else in controller issue

所以我在控制器中的if else语句有问题。 我的页面上有4个单选按钮和一个隐藏字段。 还有4个div,一次只能看到一个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

Mathias A.

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

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

例:

<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>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM