7
希望得到一個簡單的答案;我正在使用gem best_in_place,它的效果很好。我試圖找出如何使用創建一個下拉菜單:Rails 3 - best_in_place編輯
:type => :select, :collection => []
我希望能夠做的就是通過在已經從我的用戶模型中輸入名稱的列表。
任何想法如何做到這一點?我可以將它與collection_select混合使用嗎?
希望得到一個簡單的答案;我正在使用gem best_in_place,它的效果很好。我試圖找出如何使用創建一個下拉菜單:Rails 3 - best_in_place編輯
:type => :select, :collection => []
我希望能夠做的就是通過在已經從我的用戶模型中輸入名稱的列表。
任何想法如何做到這一點?我可以將它與collection_select混合使用嗎?
的:採集參數接受鍵/值對的數組:
[ [key, value], [key, value], [key, value], ... ]
凡鍵是選項值和值是選項文本。
最好在與要爲其生成選項列表的對象相對應的模型中生成此數組,而不是在您的視圖中生成此數組。
聽起來像你有best_in_place和運行,所以這裏是一個簡單的項目顯示頁面的例子,你想使用best_in_place來改變一個特定項目的指定用戶與選擇框。
## CONTROLLER
# GET /projects/1
# GET /projects/1.xml
# GET /projects/1.json
def show
@project = Project.find(params[:id])
respond_to do |format|
format.html
format.xml { render :xml => @project.to_xml }
format.json { render :json => @project.as_json }
end
end
## MODELS
class User
has_many :projects
def self.list_user_options
User.select("id, name").map {|x| [x.id, x.name] }
end
end
class Project
belongs_to :user
end
## VIEW (e.g. show.html.erb)
## excerpt
<p>
<b>Assigned to:</b>
<%= best_in_place @project, :user_id, :type => :select, :collection => User::list_user_options %>
</p>
# note :user_id and not :user
注意,從存儲器,的best_in_place主版本發送的值是否被改變,或者沒有爲選擇框Ajax請求。
還有一些要記住; best_in_place是用於「現場」編輯現有記錄,而不是創建新記錄(爲此,在您的_form部分中爲新頁面使用collection_select)。
謝謝!得到這個工作...很容易錯過你的例子結尾處的代碼,這要歸功於OS X中的鉻滾動。 – 2012-04-04 20:08:33
也許你應該選擇這個作爲你的答案,如果它對你有幫助。 – marcamillion 2012-11-30 16:59:14
感謝這個答案,一個問題是......我們如何讓'select'中的'空白'選項被選中?即完全「空白」或「無」或類似的東西。 – marcamillion 2012-11-30 17:22:56