【发布时间】:2015-09-16 00:11:03
【问题描述】:
我已经定义了 Meals 和 Recipes 之间的 has_and_belongs_to_many 关联。在 Meals create 表单中,我使用选择来填充食谱。
<%= f.select :recipes, Recipe.all.collect { |x| [x.name, x.id]}, {}, :multiple => true %>
但是结果集的第一个值是 nil。
"recipes"=>["", "2", "7"]
如何消除空/nil 值?
【问题讨论】:
-
params[:recipes].reject(&:blank?) -
控制器里有吗?如果是这样,哪一个,膳食或食谱?
-
无论您从何处获得该阵列。只需拨打
.reject(&:blank?)就可以了。 -
我将它添加到发生错误的控制器中并且它不起作用。
def create meal_params[:recipes].reject(&:blank?) @meal = Meal.new(meal_params) respond_to do |format| if @meal.save format.html { redirect_to @meal, notice: 'Meal was successfully created.' } format.json { render :show, status: :created, location: @meal } else format.html { render :new } format.json { render json: @meal.errors, status: :unprocessable_entity } end end end -
.reject(&:blank?)不会影响您调用它的对象,它只是将结果返回给您。因此,您要么需要将结果存储在一个变量中并使用它,要么使用#reject:(meal_params[:recipes].reject!(&:blank?)) 的爆炸版本。
标签: ruby-on-rails forms