【问题标题】:How do I select a default value for a collection of radio buttons in Formtastic?如何为 Formtastic 中的单选按钮集合选择默认值?
【发布时间】:2010-12-27 07:37:34
【问题描述】:

我正在 Rails3 和 Formtastic 中构建一个表单。 我有以下字段:

<%= f.input :housing, :as => :radio, :collection => {"Awesome" => "one", "Great" => "two", "Nice" => "three"} %>

生成类似于以下内容的 HTML:

<input id="post_one" name="post" type="radio" value="one" />Awesome</label>
<input id="post_two" name="post" type="radio" value="two" />Great</label>
<input id="post_three" name="post" type="radio" value="three" /> Nice</label>

完美无瑕!

现在我想知道如何传入一个将“Great”标记为默认(选定)值的选项。我尝试执行以下操作,但无法正常工作。

<%= f.input :housing, :as => :radio, :collection => {"Awesome" => "one", "Great" => "two", "Nice" => "three"}, :default => "one" %>

我也尝试过传入:selected:checked 而不是:default,但是很可惜,它不起作用。

有人知道怎么做吗?

谢谢!


编辑: Aditya 提出了一个很好的观点。一些搜索产生了this helpful tip

【问题讨论】:

    标签: html ruby-on-rails formtastic form-generator


    【解决方案1】:

    使用数组中的第三个元素为特定单选输入选项设置 HTML 选项,如下所示:

    <%= f.input :author, :as => :radio, :collection => [["Test", 'test'], ["Try", "try", {:checked => true}]]
    

    【讨论】:

    • 这会使项目被禁用,即根本无法选择
    • @kitwalker 只需将 { :disabled => true } 替换为 { :checked => true } 即可。
    • @Hoa 是对的,它应该说已检查,而不是禁用。我已经提交了一个修改,它只需要被批准
    【解决方案2】:

    您是否尝试将模型的 :housing 属性的值设置为默认值?您可以在启动表单之前或在控制器中执行此操作,或者最好的方法是在模型初始化中执行此操作? View 可能不是默认恕我直言的最佳位置。

    【讨论】:

    • 谢谢!虽然这并不能真正回答最初的问题,但您确实提出了一个很好的观点。请参阅我的问题所附的链接。
    • 我还想暗示选择/默认选项在 formtastic 上并不真正可用。建议的路线是默认模型本身的值。这是关于它的存在、历史和删除的讨论的链接。 github.com/justinfrench/formtastic/wiki/…
    • 但是在没有与表单关联的模型的情况下如何制作呢?
    【解决方案3】:

    视图中不再有执行此操作的选项,正确的方法是默认使用正确的值初始化模型,或者将模型置于控制器中的该状态,如 Aditya 所述。

    【讨论】:

    • 您查看并回复了!非常感谢:)
    • 但是在没有与表单关联的模型的情况下如何制作呢?正如@barbacan 也问的那样。
    • 如果没有模型,在这种情况下你不应该使用form_forsemantic_form_for。凡事都有取舍。我会尝试真正有一个模型。例如,SearchLogic 有一个类似于 ActiveModel 的搜索模型。这是完全可行的,没有你想象的那么多工作,而且好处远远超出这个问题——你可以进行验证,等等。
    • 我们使用 Rails 引擎来提供模型/控制器逻辑,而我们不同的应用程序只是带有引擎的视图模板...修改模型/控制器对我们来说并不是一个真正的选择因为不同的应用程序可能有不同的默认值。我想这意味着我们唯一的选择是通过 jquery 或其他方式设置它?
    • 您的其他选项是“不要将 Formtastic 用于此表单或表单的这一部分”:)
    猜你喜欢
    • 1970-01-01
    • 2013-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-13
    • 2019-10-01
    • 2014-03-16
    • 1970-01-01
    相关资源
    最近更新 更多