ruby-on-rails - 当我想要一个对象的 id 时,将 {", value= "=>"on"} 作为参数
问题描述
我有一个应该模拟交付 POS 的程序。Delivery Object 属于一个 Meal Object,它有_many 个项目。表单使用这样的辅助方法呈现一堆项目,每个项目旁边都有一个复选框......
#inside the app/models/item.rb file
def self.meal_field_maker(foods)
rStr = ""
foods.each do | sel |
rStr += "<p><input type= 'checkbox' name= 'meal[items][], value= '#{sel.id}'> #{sel.show} </p>"
end
return rStr
end
#inside the app/helpers/application_helper.rb file
def the_new_meal_form
foodgroups = Item.get_foodgroups #Gets each food group
rStr = ""
foodgroups.each do | sel |
rStr+= "\n<h3>#{sel}</h3>" #Adds the name of each Food Group as a header before checkboxes
groupedFoods = Item.list_items_of_group(sel) #Gets every item of a food group
rStr += Item.meal_field_maker(groupedFoods) #makes a checkbox input tag for each item in groupedFoods
end
return (rStr)
end
这一切都以如下所示的形式正确呈现......
<form method= "post" action= "new_user_delivery">
<input type= "hidden" name= "delivery[user]" value= <%= @user.id %>
<%= user_delivery_address_field(session).html_safe %>
<p>(Optional) Meal Name: <input type= "text" name="delivery[meal][name]"></p>
<p>----------------------------------------------------</p>
<%= the_new_meal_form.html_safe %>
<p>----------------------------------------------------</p>
<p>Proceed to Payment <input type= "submit" value= "Proceed">
</form>
看起来一切都很完美,但是在下一个动作中,参数看起来像这样......
<ActionController::Parameters {"delivery"=>{"user"=>"11", "address"=>"98 Linden Ave", "meal"=>{"name"=>"FirstMeal"}}, "meal"=>{"items"=>[{", value= "=>"on"}, {", value= "=>"on"}, {", value= "=>"on"}, {", value= "=>"on"}, {", value= "=>"on"}]}, "controller"=>"deliveries", "action"=>"payment_options", "id"=>"11"} permitted: false>
这里的问题很明显,对于我选择的每个项目,我只得到 {", value= "=>"on"},这当然没有告诉我选择了哪些项目对象,正如你所见,这是 ~supposed ~返回项目的 ID 作为参数值。我该如何解决?
解决方案
你的线路在这里:
rStr += "<p><input type= 'checkbox' name= 'meal[items][], value= '#{sel.id}'> #{sel.show} </p>"
之后缺少单引号'meal[items][]
。还要确保等号后没有空格:
rStr += "<p><input type='checkbox' name='meal[items][]', value='#{sel.id}'> #{sel.show} </p>"
如果您的模型中有 HTML 构建代码,我会说这通常是一种代码气味。通常最好将它们保留在视图或助手中,但这超出了这个问题的范围。
推荐阅读
- android - 使用 SVG 转换为矢量到 imageview
- java - 弹性搜索的弹簧
- java - SIGABRT 导致 Java 堆分析崩溃
- php - 包装一系列步骤的设计模式
- java - 如何从特定规范生成可能的密码组合以将哈希值与
- python - 更改 Matplotlib 表的字体大小?
- android - 异常的 Firebase Google 登录行为
- python-3.x - 如何将数据拆分为训练和测试,以及如何在图中显示?
- android - 在 OS 6 及更高版本中无法打开 SD 卡文件
- php - 我在 codeigniter 2.1.1 中添加了 PHPmailer,但它显示错误 SMTP ERROR: Failed to connect to server: (0)?