【问题标题】:Rails radio_button_tag how to send multiple parametersRails radio_button_tag 如何发送多个参数
【发布时间】:2016-06-22 00:45:14
【问题描述】:

我想知道是否可以使用单选按钮发送多个参数。

第一个参数是time,第二个参数是provider_id。我正在为提供者使用每种方法,并尝试选择仅选择一次并且仅从一个提供者中选择。

我的看法form_tag

<%= form_tag(provider_order_create_path)  %>

  <div class="btn-group" data-toggle="buttons">

   <% @group.provider.each do |provider| %>

<label class="btn btn-default">
  <%=  radio_button_tag :order, time_for_order_00_00.to_datetime, 'false',
  {:provider_id => provider.id} %><%= time_tag(time_00_00, :format => '%I:%M %p') %>
</label>

  <% end %>
</div>

<%= submit_tag "Submit", type: 'submit', :name => nil %>

此时我只看到 :order params in the logs :provider_id

"order"=>"2016-03-09T00:00:00+00:00"

我尝试使用hidden_field,但它没有按预期工作,它总是为列表中的最后一个提供者发送 id

谢谢你,感谢任何帮助

【问题讨论】:

  • 为什么需要与每个提供者一起设置时间?从您的代码来看,time_for_order_00_00 似乎不依赖于provider,因此对于所有单选按钮来说似乎都是相同的。如果是这种情况,您可以简单地将订购时间发送到一个隐藏字段中。
  • 发送一个数组,并使用控制器中的索引获取。 &lt;%= radio_button_tag :order, [time_for_order_00_00.to_datetime,provider.id], 'false', {:provider_id =&gt; provider.id} %&gt;&lt;%= time_tag(time_00_00, :format =&gt; '%I:%M %p') %&gt; , controller_action =&gt; params[:order[0]] ,params[:order[1]]
  • @Sravan 感谢您的回复。我试图在控制器中获取参数,但由于某种原因它是空的。 [这是我的日志 "order"=>"2016-03-09T00:00:00+00:00 1" ] 如果 params[:order].present 像 def order_create 一样测试? flash[:alert] = params[:order[1]] redirect_to (:back) else flash[:alert] = "2" redirect_to (:back) end end
  • @Sravan 我想通了。使用 split 方法,它帮助我使用参数索引。感谢出色的解决方案 params[:order].split[0]
  • 好的,没有提及老兄,我将其粘贴为答案。如果您觉得有帮助,请采纳。

标签: ruby-on-rails ruby-on-rails-4 radio-button radio-group


【解决方案1】:

在@Sravan 的帮助下,我得以解决。

View will looks like:
<%= radio_button_tag :order, [time_for_order_00_00.to_datetime,provider.id],
'false', {:provider_id => provider.id} %><%= time_tag(time_00_00, :format => '%I:%M %p') %>

Controller will be: 
@time_from = params[:order].split[0]
@provide_id = params[:order].split[1]

【讨论】:

    【解决方案2】:

    从 rado 按钮标签发送一个数组,并使用控制器中的索引值获取。

    <%= radio_button_tag :order, [time_for_order_00_00.to_datetime,provider.id], 'false', {:provider_id => provider.id} %><%= time_tag(time_00_00, :format => '%I:%M %p') %> , controller_action => params[:order[0]] ,params[:order[1]] 
    

    在控制器中,

    def you_method
      @time = params[:order].split[0]
      @provider = params[:order].split[1]
    end
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-01-10
      • 2015-03-16
      • 1970-01-01
      • 2019-10-06
      • 2014-08-02
      • 2017-07-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多