【问题标题】:Multiple form inputs for the same field同一字段的多个表单输入
【发布时间】:2015-11-23 21:33:28
【问题描述】:

我有一个名为 request_form 的 Rails 模型。在表单中,我有多个可以选择的框,类似于以下站点 http://mostlyserious.io/get-started/

中的“我们可以为您制作什么部分”

我有一个名为 number_of_guests 的字段,它可以是几个值,具体取决于单击的部分。我计划使用 javascript 来获取单击元素的值并将其分配给 request_no_of_guest 参数。但是,在表单中,我将相同的字段渲染了 5 次以允许每次选择。最好的方法是什么?有没有更好的方法来处理这个?我考虑过创建一个控制器方法,该方法循环遍历该 request_no_of_guests 参数的每个实例,并确定填充哪个实例,然后将其发送出去。

这是处理此案的最佳方式吗?

【问题讨论】:

  • 老实说这很令人困惑,你有一些复选框对吗?你想得到用户选择的值吗?添加具体的用例,因为它很混乱,否则我无法帮助你......

标签: forms ruby-on-rails-4


【解决方案1】:

由于您没有提供任何有用的细节,我将按照我理解的问题回答。

让我们快速看一下这可能是什么样子。为此,我们将设想一个演示应用程序,您可以在其中输入教授的姓名并选择他们的各个专业领域。

Professor 有一个字段expertise,它是String。

形式可以如下:

<%= label_tag 'expertise_physics', 'Physics' %>
<%= check_box_tag 'professor[expertise][]', 'Physics', checked('Physics'), id: 'expertise_physics' %>

<%= label_tag 'expertise_maths', 'Maths' %>
<%= check_box_tag 'professor[expertise][]', 'Maths', checked('Maths'), id: 'expertise_maths' %>

更改app/controllers/professors_controller.rb

来自

params.require(:professor).permit(:name, :expertise)

params.require(:professor).permit(:name, expertise:[])

然后在app/models/professor.rb

before_save do
  self.expertise.gsub!(/[\[\]\"]/, "") if attribute_present?("expertise")
end

/app/helpers/professors_helper.rb

def checked(area)
  @professor.expertise.nil? ? false : @professor.expertise.match(area)
end

这样您可以将表单中选择的不同值抓取到expertise 属性中,但是如果您打算查询所选选项,则不建议这样做。正确的方法是创建一个名为 Expertise 的新模型,然后创建关系教授 has_many 专业知识。

但是,如果您正在寻找简单的东西,请使用上面的代码。

【讨论】:

    猜你喜欢
    • 2018-05-08
    • 1970-01-01
    • 2014-02-26
    • 1970-01-01
    • 2015-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多