用戶可以通過歌曲和電影表擁有許多收藏夾top_songs,top_movies。 用戶註冊用戶(current_user)想要發佈他的最愛電影和歌曲。如何創建新的嵌套資源?
也許所有模型關聯都是正確的,我卡在控制器和視圖(窗體)中。
當我提出,我得到錯誤 -
不能大規模指派保護的屬性:歌曲
我怎麼能做到這一點嗎?所有的代碼都在下面。
用戶模型
class User < ActiveRecord::Base
attr_accessible :id, :name_special_char, :screenname, :fullname, :username, :prefix, :firstname, :lastname,:middlename, :suffix, :age, :sex, :email,
:top_movies_attributes,:top_songs_attributes
has_many :top_movies
has_many :movies, through: :top_movies
has_many :top_songs
has_many :songs, through: :top_songs
accepts_nested_attributes_for :top_songs, :allow_destroy => true
accepts_nested_attributes_for :top_movies, :allow_destroy => true
end
電影模型
class Movie < ActiveRecord::Base
attr_accessible :name
has_many :top_movies
has_many :users, through: :top_movies
end
TopMovie模型
class TopMovie < ActiveRecord::Base
belongs_to :user
belongs_to :movie
# attr_accessible :title, :body
end
宋模型
class Song < ActiveRecord::Base
attr_accessible :name
has_many :top_songs
has_many :users, through: :top_songs
end
TopSong模型
class TopSong < ActiveRecord::Base
belongs_to :user
belongs_to :song
# attr_accessible :title, :body
end
控制器
class MyTopFivesController < ApplicationController
def new
@favorites = current_user
@[email protected]()
@[email protected]()
respond_to do |format|
format.html # new.html.erb
format.json { render json: @useraccounts_my_top_fife }
end
end
def create
@favorites = current_user(params[:user])
@favorites.save!
# Here i have stuck. i am not sure how to save.
end
視圖形式
<%=nested_form_for @favorites ,:url=>favorites_path(@favorites),:method=>'post' do |f| %>
<label >Songs</label>
<%= f.fields_for :songs do |songs| %>
<div id="Topsongs" >
<div class="input-control text span5 place-left ">
<%= songs.text_field :name,:placeholder=>"songs name.." %>
</div>
<div class="span1 place-left">
<%= songs.link_to_remove "", :class=>"icon-minus" %>
</div>
</div>
<% end %>
<span >
<%= f.link_to_add "", :songs, :class=>"icon-plus", :data => { :target => "#Topsongs" } %>
</span>
<label >movies</label>
<%= f.fields_for :movies do |movies| %>
<div id="Topmovies">
<div class="input-control text span5 place-left ">
<%= movies.text_field :name,:placeholder=>"movies name.." %>
</div>
<div class="span1 place-left">
<%= movies.link_to_remove "", :class=>"icon-minus" %>
</div>
</div>
<% end %>
<span>
<%= f.link_to_add "", :movies, :class=>"icon-plus",:style=>"font-size: 14px;", :data => { :target => "#Topmovies" } %>
</span>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
謝謝@Manoj Mong。 – Gagan