簡體   English   中英

在Rails中使用模型數據填充選擇

[英]Populating a Select with Model Data in Rails

我覺得有必要為提出這么簡單的問題而道歉,但我對Rails指南越來越感到沮喪。 我確信他們回答了我的問題,但他們沒有提供足夠的背景讓我真正理解如何運用他們給我的東西。 谷歌也沒有多大幫助,盡管我可能只是在搜索錯誤的術語/短語。 鑒於免責聲明,我只是要繼續問:

我有一張HABTM AlbumImage 為了支持這一點,我有一個帶有image_idalbum_id字段的albums_images表(沒有其他字段)。 對於我的生活,我無法弄清楚如何填充我的圖像形式部分,以便用戶可以選擇新上傳的圖像應該屬於的相冊。

我正在學習Rails,所以我真的只想要基礎知識。 我確信有一些花哨的插件可以做到這一百種方式,但我想首先學習基礎知識並從那里開始構建。 我的表格部分是相當多的教科書:

<% form_for( @image, :html => { :multipart => true } ) do |f| %>
  # All the basics you'd expect to see.
<% end %>

我最近的嘗試沒有比我嘗試的任何其他變種更好,但看起來像這樣:

<p>
  <%= f.label :album_id %>
  <%= f.select( :album_id, current_user.albums, :id, :name ) -%>
</p>

我再次認識到問題的簡單性,我已經閱讀了我能找到的內容,但我無法將其整合到一個完整的解決方案中。 似乎有很多方法可以做到這一點,但沒有真正討論每個方法,它們的優點/缺點或如何在更大的背景下真正使用它們。

謝謝。

更新:要注意的幾個鍵和代碼更正。 首先,圖像和專輯之間存在HABTM關系。 兩個型號表都沒有FK直接引用另一個。 其次,專輯集應該作為current_user.albums訪問(上面更正)。 用戶has_many專輯和專輯belongs_to用戶。

更新:根據下面的IV的要求,目前,使用此代碼:

22: <p>  
23:   <%= f.label :album_id %>  
24:   <%= f.select( :album_id, current_user.albums.collect {|a| [a.name, a.id]}) -%>  
25: </p>

我收到此錯誤:

undefined method `album_id' for #<Image:0x1042ec110>

我在第24行得到了錯誤。

我認為select元素是Rails中比較混亂的方面之一,因為正如你所說的,似乎有很多方法可以做到這一點。

嘗試這個:

<%= f.select(:album_id, @image.albums.all.collect {|a| [a.name, a.id]}) -%>

好吧,我不確定這是最好的方式,Rails的方式,或者坦率地說,甚至是一種優雅的方式,但這里是我用過的代碼,到目前為止似乎工作。

<%= f.label 'Albums' -%>
<%= collection_select( :image, :album_ids, current_user.albums, :id, :name, {}, { :multiple => true } ) -%>

此時,當我說“工作”時,我真正可以證明的是,頁面呈現時沒有錯誤,並且在編輯圖像時選擇了相應的相冊或專輯。 我仍然對從很多不同來源拼湊出“完整”解決方案的難度感到震驚。

暫無
暫無

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

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