假設我們有抒情模式:的Rails在一個視圖中的兩個連接的模型
class Lyric < ActiveRecord::Base
belongs_to :song
end
與宋型號:
class Song < ActiveRecord::Base
has_many :artist, :through => :artistsong
belongs_to :album
has_one :lyric
accepts_nested_attributes_for :lyric #is this needed?
end
遷移腳本歌曲:
class CreateSongs < ActiveRecord::Migration
def change
create_table :songs do |t|
t.integer :track
t.string :name
t.references :album
t.timestamps
end
add_index :songs, :album_id
end
end
的歌詞遷移腳本:
class CreateLyrics < ActiveRecord::Migration
def change
create_table :lyrics do |t|
t.text :lyric
t.references :song
t.timestamps
end
add_index :lyrics, :song_id
end
end
假設我有一首名爲「歌曲1」的歌曲,並在數據庫中附有歌詞。
所以歌曲表:
|id|name |
-------------------------
|1 |song1 |
和歌詞表:
|id|song_id|lyrics |
---------------------------------
|1 |1 |blahblah |
在song_controller.rb的編輯方法:
# GET /songs/1/edit
def edit
@song = Song.find(params[:id], :include=>:lyric)
end
這是編輯的觀點歌曲:(在Matteo建議的修復之後)
<%= form_for(@song) do |f| %>
<div class="field">
<%= f.label :name %><br />
<%= f.text_field :name %>
</div>
<% f.fields_for :song_text do |child_form| %>
<%= child_form.label :lyrics %><br />
<%= child_form.text_field :lyrics %>
<% end %>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
如果我這樣做:
<%= debug(@song.lyric) %>
我可以看到歌詞的內容:
--- !ruby/object:Lyric
attributes:
id: 1
song_text: hid
song_id: 2
created_at: 2012-02-07 00:59:14.000000000Z
updated_at: 2012-02-07 07:21:57.000000000Z
但在歌詞文本區域完全消失的觀點...
我希望能夠以相同的形式編輯歌曲的名稱和歌詞,這可能嗎?
感謝
添加了歌詞和歌曲的遷移腳本 – Bill 2012-02-07 07:40:17
你可以嘗試更改表格歌詞中包含歌詞的字段的名稱,並在fields_for中使用新名稱。也許像song_text或lyric_text。 – 2012-02-07 07:45:02
對不起,我是第一次使用紅寶石的用戶,我想我改變了適當的地方。 – Bill 2012-02-07 07:54:37