我有两组有条件(校长和其他)。 并且因为我做错了sintaxis而无法工作。
我的表
|invoice_cia|
|id| |name|
1 ABC
2 DEF
3 FGH
4 IJK
我的控制器:
def index
@cias = invoice_cia.find(:all,:conditions=>['id IN (1,2)'])
@cias2 = invoice_cia.find(:all,:conditions=>['id NOT IN (1,2)'])
end
我的索引视图但由于我使用错误而无效:
<%= option_groups_from_collection_for_select(@cias.map{|t| t.name, t.id},@cias2.map{|t| t.name, t.id} )>
以下是演示:http://jsfiddle.net/9mpBw/
这是日志:
compile error
/home/master/proyects/test/app/views/invoice/index.html.erb:1: syntax error, unexpected '}', expecting tCOLON2 or '[' or '.'
...ct(@cias.map{|t| t.name, t.id},@cias2.map{|t| t.name, t.id} ...
^
/home/master/proyects/test/app/views/invoice/index.html.erb:1: syntax error, unexpected '}', expecting tCOLON2 or '[' or '.'
...},@cias2.map{|t| t.name, t.id} )).to_s); @output_buffer.conc...
^
请有人帮助我吗?
答案 0 :(得分:1)
根据页面:
http://api.rubyonrails.org/classes/ActionView/Helpers/FormOptionsHelper.html#method-i-grouped_options_for_select
您希望在视图中找到以下内容:
<% grouped_options = {
'1.Principals' => options_for_select(@cias.collect {|t| [t.name,t.id]}),
'2.Others' => options_for_select(@cias2.collect {|t| [t.name,t.id]}) } %>
<%= select_tag "cia",grouped_options_for_select(grouped_options) %>
答案 1 :(得分:1)
昨天我准备了一个答案,但看来查理布朗已经帮你解决了这个问题。我只想谈谈他没有提到的一个问题。
您遇到的问题是由于错误消息指示语法不正确。通常在Ruby中,在没有歧义(意味着,显而易见)的情况下省略大括号和括号是可以接受的,但在所有其他情况下,必须包括它们。
在您的情况下,您似乎试图在map
块中返回一个数组:
@cias.map{|t| t.name, t.id}
编译器不能假设你正在尝试做什么,所以它会抱怨。在这种情况下,您必须包括括号:
@cias.map{|t| [t.name, t.id] } # note the array brackets []