1

我迷路了,我不知道我做错了什么!我有 4 个单选按钮和一个隐藏字段(值 =“1”)。当您单击第二个单选按钮时,隐藏字段的值更改为 2,依此类推。这适用于 js 函数。

选择不同的射射线布顿时,将显示不同的DIV。现在,当我试图在我的控制器中获取隐藏字段的值时,它总是返回 nil。

这是代码:

看法:

(单选按钮、隐藏字段和一个 div)

<div>
    <%= form_tag patients_path do %>
        <%= 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" %>
        <%= hidden_field_tag :hidden_one, "1" %>
    <% end %>
</div>

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

控制器:

def index
    @staff_all = Staff.all
    @ocmw_all = Ocmw.all
    @mutuality_all = Mutuality.all
    debugger
    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
4

2 回答 2

2

这是因为你有两种形式。当您提交第二个表单时,它不会发送第一个表单的字段。如果您将所有内容放在一种形式中,它将按预期工作。

于 2013-04-05T10:36:30.720 回答
0

仅使用单个表单:作为一种解决方法,在单个表单中使用两个提交标签:将操作与params[:action]

例如:

<%= form_for :attachment_metadata, :url=>{:action=>'delete_files'}, :html=>{:onsubmit=> "return confirm('Are you sure, you want to delete selected files?');",:multipart => true} do |f| %>
   <table>
     ..........Some stuff here..........
   </table> 
<%= submit_tag 'Reprocess', :class =>'button' %>
<%= submit_tag 'Remove', :class =>'button' %>
<% end %>

params[:commit]可以区分两个提交标签的动作。

@action = params[:commit]

如果您单击“重新处理”按钮,它会将@action 值作为“重新处理”,如果单击“删除”按钮,它会提供“删除”值,

然后你会得到你的价值观。

于 2013-04-05T10:56:34.597 回答