2016-08-13 125 views
0

我想寫一個選擇標籤,利用我寫的幫手。Rails 4 - 可以在選擇標籤內使用ruby標籤嗎?

當我這樣寫標籤時,它一切正常。

<%= select_tag "roles", options_from_collection_for_select(@roles, "id", "name"), :multiple => true, :class => 'chosen-select form-control' %> 

我想使用助手向數據庫中的名稱呈現不同的角色名稱。我做了一個幫手來做到這一點。現在我正在嘗試使用該輔助方法而不是:name屬性。

<%= select_tag "roles", options_from_collection_for_select(@roles, "id", "<%= text_for_role(name)%>"), :multiple => true, :class => 'chosen-select form-control' %> 

上述嘗試不起作用。我找不到如何在選擇標籤內使用助手的例子。可能嗎?

回答

1

如果你願意,你需要使用#{}如

<%= select_tag "roles", options_from_collection_for_select(@roles, "id", "<%= #{text_for_role(name)}%>"), :multiple => true, :class => 'chosen-select form-control' %> 

字符串中的解釋Ruby中,你也可以直接把你的Ruby代碼,而不是插值的:

<%= select_tag "roles", options_from_collection_for_select(@roles, "id", text_for_role("name")), :multiple => true, :class => 'chosen-select form-control' %> 

以上只會解決你遇到的錯誤,但我認爲它不會解決問題到底。如果你想顯示一個不同於數據庫中的名稱,我想你需要在角色模型中定義text_for_role。 然後調用:

<%= select_tag "roles", options_from_collection_for_select(@roles, :id, :text_for_role), :multiple => true, :class => 'chosen-select form-control' %> 

這將需要角色的方法文本的每個AR對象設置在html標記中的name屬性。

+0

謝謝 - 我試過這兩個選項。但他們都沒有工作。 – Mel

+0

第一個錯誤:語法錯誤,意外$ undefined ...:multiple => true,:class => \'selected-select form-control \'... ... – Mel

+0

第二個錯誤:undefined local變量或方法'名稱'爲#<#:0x007ff6a9cbc3f0> – Mel