simple_form(rails)显示额外的字符( - “0”)

时间:2013-05-04 17:35:23

标签: ruby-on-rails checkbox simple-form acts-as-taggable-on

我使用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(支付方式)过滤用户。但是,这没有用,所以我简单地将其简化为此。之后我删除了所有与标记相关的代码。这与我得到的符号有什么关系吗?

非常感谢谢谢和帮助!

1 个答案:

答案 0 :(得分:0)

如果不了解paymode实际 的内容,很难说。

到目前为止,您似乎直接显示付款方式的集合,例如,在枚举时调用.to_s

你应该循环遍历它们并明确地显示每个,粗略地说:

  

这假设每个paymode都是一个关联对象,其内容类似于id和人类可读的名称。这至少可以解释你所看到的一些“垃圾”输出。