我使用simple_form和devise(RoR gems)制作新用户和编辑用户表单。我添加了一个复选框功能,以便用户可以选择他们接受的付款方式。但是,在填写并更新表单后,用户页面会生成此破折号,零和其他符号,同时还会显示已选中的项目。
示例:(当我更新表单时,我检查了“借记卡”和“PayPal”。 这就是出现的结果:
接受的付款方式:--- - 借记卡 - PayPal - ''
我知道这可能是一个愚蠢的问题,但有谁知道如何摆脱不必要的符号?我是RoR的完全初学者,我真的很难理解所有的代码
对于我的edit.html.erb(这也是用户访问以查看个人资料页面的内容),我使用了以下代码:
<%= simple_form_for(resource, :as => resource_name, :url => registration_path(resource_name), :html => {:method => :put, class: 'form-horizontal'}) do |f| %>
<%= f.error_notification %>
<%= f.input :name %>
Payment Methods Accepted:
<%= @user.paymode %>
<div class="checkboxes">
<p>
<%= f.collection_check_boxes :paymode, [['Cash', 'Cash'] ,['Credit Card', 'Credit Card'] ,['Debit Card', 'Debit Card'] ,['PayPal', 'PayPal']], :first, :last, {:item_wrapper_class => 'checkbox_container'} %>
</div>
然后在我的user.controller.rb文件
下定义 class UsersController < ApplicationController
def show
@user = User.find(params[:id])
end
另外,为了给出一个快速背景:我最初尝试使用simple_form和devise实现acts_as_taggable_on,以便我最终可以通过paymode(支付方式)过滤用户。但是,这没有用,所以我简单地将其简化为此。之后我删除了所有与标记相关的代码。这与我得到的符号有什么关系吗?
非常感谢谢谢和帮助!
答案 0 :(得分:0)
如果不了解paymode
实际 的内容,很难说。
到目前为止,您似乎直接显示付款方式的集合,例如,在枚举时调用.to_s
。
你应该循环遍历它们并明确地显示每个,粗略地说:
这假设每个paymode
都是一个关联对象,其内容类似于id和人类可读的名称。这至少可以解释你所看到的一些“垃圾”输出。