标签: form-helpers

Simple_form:为什么生成两个输入标签而不是一个?

为什么simple_form为布尔字段生成两次输入标记(一个隐藏,另一个不隐藏)?

在我的simple_form中,我有这个:

<%= form.input :over_phone, as: :boolean, input_html: {checked: true} %>

产生这个:

<div class="control-group boolean optional order_over_phone">
  <label class="boolean optional control-label" for="order_over_phone">Order over phone</label>
  <div class="controls">
    <input name="order[over_phone]" type="hidden" value="0">
    <label class="checkbox">
      <input checked="checked" class="boolean optional" id="order_over_phone" name="order[over_phone]" type="checkbox" value="1">
    </label>
  </div>
</div>
Run Code Online (Sandbox Code Playgroud)

如您所见,一个输入标记被隐藏,值为0,另一个输入标记被取消隐藏,值为1.如果我提交表单,在post参数中我得到两个值:

order[over_phone]:0
order[over_phone]:1
Run Code Online (Sandbox Code Playgroud)

我在与此布尔字段关联的模型创建中有一些随机行为,所以我想知道它是否是由simple_form引起的.非布尔字段类型不会发生这种情况.

如果您遇到类似问题,请分享您的经验.

我正在使用simple_form 2.1.0.

ruby-on-rails form-helpers simple-form

7
推荐指数
1
解决办法
1083
查看次数

在rails中,是否使用表单助手?

在rails中,是否建议使用表单助手?在内部,一切都归结为普通的html然后为什么不直接写html?在编写直接html时,性能显然会比使用帮助程序更好.使用表单助手像惯例或铁轨开发人员必须遵循的东西?

performance ruby-on-rails form-helpers

6
推荐指数
1
解决办法
2234
查看次数

Ruby on rails:选择具有默认值属性的选项菜单

我需要在列表中生成一个带有Default值的选择菜单<options>.这就是我需要它的样子.

<select name="menu[parent_id]" id="menu_parent_id">
 <option value="0">==None==</option>
 <option value="34">TEST</option>
</select>
Run Code Online (Sandbox Code Playgroud)

目前我select在我的表单中使用这个帮助器

   <%= f.select(:parent_id, @parent_menus.collect {|p| [ p.name, p.id ] }, {:include_blank => '==None=='})%>
Run Code Online (Sandbox Code Playgroud)

上面的代码产生了这个; (value="")

<select name="menu[parent_id]" id="menu_parent_id">
 <option value="">==None==</option>
 <option value="34">TEST</option>
</select>
Run Code Online (Sandbox Code Playgroud)

这里有人能告诉我添加value="0"到选项列表的方法吗?

ruby-on-rails form-helpers

6
推荐指数
1
解决办法
1万
查看次数

Rails:向collection_select添加选项

我正在使用collection_select字段,但是需要在默认选项前添加选项,这些选项不代表特定的模型记录,用于将appropriet字段设置为NULL.但我无法找到任何办法.

如果您需要更多信息,请不要随便询问.使用Rails 3.2.3与标准表单助手.

PS我知道我可以这样做:

@parents = ['default_name','nil']
@parents << Model.all.map {|item| [item.name,item.id]}
Run Code Online (Sandbox Code Playgroud)

但我认为有更优雅的方式.

form-helpers ruby-on-rails-3

6
推荐指数
2
解决办法
7261
查看次数

如何使用rails date_field助手?

我对rails上的ruby完全不熟悉,并尝试按照Form Helpers上rails指南.当我尝试使用date_field助手时:

<%= date_field(:user, :born_on) %>
Run Code Online (Sandbox Code Playgroud)

我收到一个错误:

undefined method `date_field' for #<#<Class:0x007fa42ffe3dc0>:0x007fa42f82c410>
Run Code Online (Sandbox Code Playgroud)

我是否应该包含一些东西以便使用某些帮助者?谢谢!

ruby-on-rails form-helpers

6
推荐指数
1
解决办法
3785
查看次数

Rails 4:将复选框结果保存到序列化阵列

我有一个Campaign带有channel列的模型.这channelserialized通过复选框存储一系列选定结果.

这是模特..

应用程序/模型/ campaign.rb

class Campaign < ActiveRecord::Base
    serialize :channels, Array
end
Run Code Online (Sandbox Code Playgroud)

应用程序/控制器/ compaigns_controller.rb

class CampaignsController < ApplicationController
      def index
        @campaigns = Campaign.all.order("created_at DESC")
      end

      def new
        @campaign = Campaign.new
      end

      def create
        @campaign = Campaign.new(campaign_params)


        if @campaign.save

            zip = Uploadzip.find(params[:uploadzip_id])
            zip.campaign = @campaign
            zip.save

            flash[:success] = "Campaign Successfully Launched!"
            redirect_to @campaign
        else
            flash[:error] = "There was a problem launching your Campaign."
            redirect_to new_campaign_path
        end
      end

      def show
        @campaign = Campaign.includes(:program, :uploadzip, …
Run Code Online (Sandbox Code Playgroud)

ruby checkbox ruby-on-rails form-helpers ruby-on-rails-4

6
推荐指数
1
解决办法
2649
查看次数

rails - 禁用选择标记

我正在尝试禁用选择标记.填充我们的非数据库属性而不是整数数组的选项,所以collection_select似乎在这种情况下不起作用.

技术1:

select_tag(:zev_qty, options_for_select(display_quantity(@order_subject_supplies_request.site), {:disabled => display_quantity(@order_subject_supplies_request.site)}))

def display_quantity(site)
  if site
    site.open_site? ? [[0,0],[1,1],[2,2]] : [[0,0],[1,1]]
  else
    []
  end
end
Run Code Online (Sandbox Code Playgroud)

以上不是我想要的.它禁用选项而不是select标签.

技术2:

f.select(:zev_qty, display_quantity(@order_subject_supplies_request.site), {:disabled => true})
  def display_quantity(site)
    if site
      site.open_site? ? [0,1,2] : [0,1]
    else
      []
    end
  end
Run Code Online (Sandbox Code Playgroud)

以上不起作用.没有禁用任何选项.

虽然在两种情况下都会在下拉列表中显示正确的值,但是未禁用select标记,并注意在此示例中,我只是将disabled设置为true,但我当然会有条件地禁用select标记.

ruby-on-rails form-helpers

5
推荐指数
1
解决办法
5291
查看次数

选择:multiple => true不保存值

我试图保存多个选定的值,形成由rails helper select生成的多选字段.

  <div class="form-group">
    <%= f.label :available_type, "Available in category" %><br>
    <%= f.select :available_type, options_for_select(Setting.subscription_type, @terminal.available_type), { }, { class: "form-control", :multiple => true, :size => 5    } %>
  </div>
Run Code Online (Sandbox Code Playgroud)

这样渲染(所选值来自先前的尝试,没有":multiple => true"属性,完美地工作):

<select class="form-control" id="terminal_available_type" multiple="multiple" name="terminal[available_type][]" size="5">
<option value="Postpaid">Postpaid</option>
<option value="MBB">MBB</option>
<option selected="selected" value="Prepaid">Prepaid</option>
</select>
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

任何帮助表示赞赏.:)

编辑: 我试过把serialize :available_type我的终端模型,dident改变任何东西.: - /

编辑2: 我注意到,当我标记它们时,多个选择的字段不会将选项标记为已选中.如果我手动添加选定的属性我得到这些参数:

{"utf8"=>"?", "_method"=>"patch", "authenticity_token"=>"RrwWlKk8XlGeC+dTu/w6oSM68e9LcbUFJWTI+eRS9mI=", "terminal"=>{"inndate"=>"2015-01-13", "outdate"=>"", "brand_id"=>"2", "name"=>"iPhone 5c", "available_type"=>["", "MBB", "Prepaid"], "product_number"=>"3r2342", "ean_code"=>"", "navision_nb"=>"324234", "cost_price_map"=>"3200.0", "manual_price"=>"", "sales_info"=>"Just sell!"}, "commit"=>"Submit", "action"=>"update", "controller"=>"terminals", "id"=>"2"} …
Run Code Online (Sandbox Code Playgroud)

select ruby-on-rails multiple-select form-helpers

5
推荐指数
1
解决办法
4026
查看次数

Rails:simple_form单选按钮切换(zurb基础)

我试图在Rails单选按钮上使用Zurb基金会的开关元件.

我有这个代码:

<%= simple_form_for @mymodel .... |f| %>

<%= f.input :active, as: :radio_buttons %>

<% end %>
Run Code Online (Sandbox Code Playgroud)

这会生成单选按钮.

我现在正在尝试实施zurb基础开关,因为它看起来更好.

Zurb基金会开关元件

默认开关的示例代码:

<div class="switch">
  <input id="x" name="switch-x" type="radio" checked>
  <label for="x" onclick="">Off</label>

  <input id="x1" name="switch-x" type="radio">
  <label for="x1" onclick="">On</label>

  <span></span>
</div>
Run Code Online (Sandbox Code Playgroud)

问题是,它看起来像这样:

<div class="switch">
    <div class="input radio_buttons optional mymodel_active">
    <label class="radio_buttons optional">active</label>
    <span class="radio">
    <input class="radio_buttons optional" id="mymodel_active_true" name="mymodel[active]" type="radio" value="true">
    <label class="collection_radio_buttons" for="mymodel_active_true">Yes</label>   
    </span>
    <span class="radio">
    <input checked="checked" class="radio_buttons optional" id="mymodel_active_false" name="mymodel[active]" type="radio" value="false">
    <label class="collection_radio_buttons" …
Run Code Online (Sandbox Code Playgroud)

html ruby-on-rails form-helpers simple-form zurb-foundation

5
推荐指数
1
解决办法
1404
查看次数

RoR:为什么我得到未定义的方法'hidden_​​field_tag'?

现在我连续两个表格

<section>
        <%= render 'shared/micropost_form_purchase' %>
        <%= render 'shared/micropost_form_sale' %>
      </section>
Run Code Online (Sandbox Code Playgroud)

然后是_micropost_form_purchase.html.erb

<%= form_for(@micropost) do |f| %>
  <%= render 'shared/error_messages', object: f.object %>
  <div class="field no-indent">
    <%= f.text_area :content, placeholder: "What's something else you want to buy?" %>
    <%= f.hidden_field_tag :type, :value => "purchase" %>
  </div>
  <%= f.submit "Post", class: "btn btn-large btn-primary" %>
<% end %>
Run Code Online (Sandbox Code Playgroud)

对于_micropost_form_sale.html.erb我有

<%= form_for(@micropost, :html => { :id => "sale" }) do |f| %>
  <%= render 'shared/error_messages', object: f.object %>
  <div class="field no-indent">
    <%= …
Run Code Online (Sandbox Code Playgroud)

form-helpers ruby-on-rails-3

4
推荐指数
1
解决办法
2319
查看次数