我是Rails(4.2.4)上的Ruby(2.2.3)的新手,我正在尝试一些新的代码。当我输入下面的代码时,我收到以下错误。
代码:
<%= f.select (:food_preference_id,
options_from_collection_for_select(FoodPreference.all, :id, :name),
{:prompt => 'Please Choose'}, {:class => "form-control"})
%>
错误:
> syntax error, unexpected ',', expecting ')'
错误引用逗号:food_preference_id。
但是当我输入没有括号的代码(如下所示)时,它可以正常工作
<%= f.select :food_preference_id,
options_from_collection_for_select(FoodPreference.all, :id, :name),
{:prompt => 'Please Choose'},
{:class => "form-control"}
%>
我不明白为什么代码在没有括号的情况下工作,并且不能使用括号。有人可以帮助我理解。提前谢谢。
答案 0 :(得分:4)
方法名称与括号之间不能包含空格。
f.select (:food_preference_id
^^
编写代码
<%= f.select(:food_preference_id,
options_from_collection_for_select(FoodPreference.all, :id, :name),
{:prompt => 'Please Choose'}, {:class => "form-control"})
%>
答案 1 :(得分:0)
很棒,Arup!
对于OP,要理解的是.select
是对f
语句创建的表单构建器对象(form_for :object do |f|
)的方法调用。 (或者您正在使用的任何变体。)
使用括号中包含的参数(或参数,无论哪个)调用方法时,初始括号必须紧跟方法名称。所以,正如Arup指出的那样,
this.is(:okay)
但
this.is (:not_okay)
但是,您不需要使用括号。所以,
this.is :also_okay