4

我正在使用formtastic爲與另一個模型具有HABTM關係的模型的對象呈現表單。Ruby on Rails:更改formtastic中的複選框標籤

我這樣做是爲了使複選框列表:

<%= f.input :classes, :as => :check_boxes, :collection => UserClass.all %> 

是的,它使所有的複選框,並在右側則顯示對象名稱,這樣的事情。所以我有這樣的事情:

[x] #<UserClass:0x000000087e4958> 

我該如何改變這種情況?我想顯示課程名稱和說明...

謝謝。

回答

13

使用:member_label選項:

<%= f.input :classes, :as => :check_boxes, 
    :collection => UserClass.all, :member_label => :name %> 

(假設你的UserClass的有name屬性,例如)。如果你的標籤來自多個領域,你可以通過一個Proc。例如(如果您有UserClass的和first_name屬性last_name):

<%= f.input :classes, :as => :check_boxes, 
    :collection => UserClass.all, 
    :member_label => Proc.new { |u| "#{u.first_name} #{u.last_name}" } %> 

以上是Formtastic版本2.x的對於1.2穩定的分支,它的工作原理是相同的(您可以傳入方法名稱或proc),但該選項稱爲:label_method。示例:

<%= f.input :classes, :as => :check_boxes, 
    :collection => UserClass.all, :label_method => :name %> 
+0

感謝您的快速回答。我已經嘗試過了,還有:value_method,但我仍然可以看到#。有什麼想法嗎? – 2012-03-25 23:50:39

+0

我正在使用formtastic 1.2 ... – 2012-03-25 23:59:11

+0

@HommerSmith,在1.2中該選項被稱爲':label_method'。我更新了我的答案,以表明這一點。 – 2012-03-26 00:08:36

-1

從標記中刪除渲染。 使用<%而不是<%=

感謝@HommerSmith清理有關在舊版本中使用以及在哪裏使用上述示例的事情。

+0

如果我刪除=在<%它不會顯示任何複選框... – 2012-03-26 00:10:15

+0

@HommerSmith,Galuga是正確的。在版本1.2中,你省略了'=',渲染是內置的。但也請參閱我的答案,瞭解如何在1.2中執行所需的操作。 – 2012-03-26 00:11:11

+0

我在1.2,它不是渲染輸入,如果我把它關閉... – 2012-03-26 00:13:03

相關問題