簡體   English   中英

來自Rails Select Helper的數組作為參數

[英]Array as Parameter from Rails Select Helper

我正在使用使用acts_as_taggable_on的舊項目,該項目希望標簽以數組的形式出現。 我有一個選擇框,允許用戶在名為類別的字段中的課程上選擇標簽。 批量分配創建的唯一方法是使params看起來像以下params = {:course => {:categories => ['Presentation']}} 我目前對此助手有看法:

 <%= f.select 'categories', ['Presentation' , 'Round Table' , 'Demo', 'Hands-on'] %>

這會給我一個參數,例如params = {:course => {:categories => 'Presentation'}} 這是行不通的,因為充當標簽山牆顯然無法處理除集合以外的任何傳遞。

我嘗試將categories更改為categories[]但隨后出現此錯誤:

undefined method `categories[]' for #<Course:0x007f9d95c5b810>

有誰知道格式化我的選擇標簽以將數組返回到控制器的正確方法? 我正在使用Rails 3.2.3

我沒有使用acts_as_taggable_on,但是也許這個簡單的技巧適合您? 您應該將其放在批量分配之前。

category = params[:course][:categories]
params[:course][:categories] = [category]

如果僅允許選擇一個標記,則可以執行以下操作:

<%= f.select 'categories', [['Presentation'] , ['Round Table'] , ['Demo'], ['Hands-on']] %>

每個項目數組的第一個顯示值,最后一個返回值,在這種情況下都將返回相同的內容,因為當數組作為一個元素時,數組的第一個元素與最后一個元素相同。

似乎select並沒有為您提供該選項。

如果我理解正確,一種選擇可能是改為使用select_tag,而只是明確說明您希望在參數中進行選擇的位置:

<%= select_tag 'course[categories][]', options_for_select(['Presentation' , 'Round Table' , 'Demo', 'Hands-on']) %>

那應該使您的參數符合您的需求。

這是我在其中一個項目中使用的內容:

<% options = { include_blank: true } %>

<% html_options = { required: true, name: "#{f.object_name}[#{resource.id}][days][]" } %>

<%= f.select :days, DAYS, options, html_options %>

如果沒有html_options[:name] ,Rails會處理select標記的名稱並吐出類似

service[service_add_ons_attributes][11][days]

但是我需要

service[service_add_ons_attributes][11][days][]

因此,我將其覆蓋。

希望能有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM