我觉得有必要为提出这么简单的问题而道歉,但我对Rails指南越来越感到沮丧.我确信他们回答了我的问题,但他们没有提供足够的背景让我真正理解如何运用他们给我的东西.谷歌也没有多大帮助,尽管我可能只是在搜索错误的术语/短语.鉴于免责声明,我只是要继续问:
我有一个Image
HABTM Album
.为了支持这一点,我有一个albums_images
表image_id
和album_id
字段(没有其他).对于我的生活,我无法弄清楚如何填充我的图像形式部分,以便用户可以选择新上传的图像应该属于的相册.
我正在学习Rails,所以我真的只想要基础知识.我确信有一些花哨的插件可以做到这一百种方式,但我想首先学习基础知识并从那里开始构建.我的表格部分是相当多的教科书:
<% form_for( @image, :html => { :multipart => true } ) do |f| %>
# All the basics you'd expect to see.
<% end %>
Run Code Online (Sandbox Code Playgroud)
我最近的尝试没有比我尝试的任何其他变种更好,但看起来像这样:
<p>
<%= f.label :album_id %>
<%= f.select( :album_id, current_user.albums, :id, :name ) -%>
</p>
Run Code Online (Sandbox Code Playgroud)
我再次认识到问题的简单性,我已经阅读了我能找到的内容,但我无法将其整合到一个完整的解决方案中.似乎有很多方法可以做到这一点,但没有真正讨论每个方法,它们的优点/缺点或如何在更大的背景下真正使用它们.
谢谢.
更新:要注意的几个键和代码更正.首先,图像和专辑之间存在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>
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
undefined method `album_id' for #<Image:0x1042ec110>
Run Code Online (Sandbox Code Playgroud)
我在第24行得到了错误.
Joh*_*ley 18
我认为select
元素是Rails中比较混乱的一个方面,因为正如你所说的那样,似乎有很多方法可以做到.
试试这个:
<%= f.select(:album_id, @image.albums.all.collect {|a| [a.name, a.id]}) -%>
Run Code Online (Sandbox Code Playgroud)
好吧,我不确定这是最好的方式,Rails的方式,或者坦率地说,甚至是一种优雅的方式,但这里是我用过的代码,到目前为止似乎工作.
<%= f.label 'Albums' -%>
<%= collection_select( :image, :album_ids, current_user.albums, :id, :name, {}, { :multiple => true } ) -%>
Run Code Online (Sandbox Code Playgroud)
在这一点上,当我说"工作"时,所有我真的可以证明的是,页面呈现没有错误和适当的专辑或专辑时,我编辑的图像被选中.我仍然对从很多不同来源拼凑出"完整"解决方案的难度感到震惊.
归档时间: |
|
查看次数: |
21002 次 |
最近记录: |