Rails 4- Associations -Tutorial Movielist

时间:2013-08-15 14:48:24

标签: ruby-on-rails ruby associations

您好我正在尝试使用Rails on Rest 2 - 使用rails 4进行movielist教程并在进行新轨道时进行调整。我被困在电影角色的协会上。我已添加到Movie.rb

class Movie < ActiveRecord::Base

    has_many :roles, :dependent => :destroy
  has_many :people, :through => :roles
validates_presence_of :title
  def new_role=(values)
    values.each do |i, hash|
      unless hash[:name].blank?
        roles.create(:person_id => hash[:person_id], :name => hash[:name])
        roles.save
      end
    end
  end

 def deleted_roles=(values)
   values.each do |role_id|
      roles.find(role_id).destroy
    end
  end

end

并显示我渲染的_Form.html.rb(下面的例子)

 <b>Add New People</b><br />
    <% (1..3).each do |i| %>
      <%= select_tag 'movie_new_role_person_id', options_for_select(@people), {
        :name => "movie[new_role][#{i}][person_id]"
      } %>
      <%= text_field_tag 'movie_new_role_name', '', {
        :name => "movie[new_role][#{i}][name]"
      } %><br />
    <% end %>
  </p>

  <p>
    <%= f.submit "Update" %>
  </p>

它呈现可供选择的列表,但是当我提交时 - 没有任何内容写入数据库表。 如果我在数据库中手动输入数据,那么它将显示在movielist页面上,即:“Stephen Spielberg - Director”等... 任何帮助表示赞赏 - 在这个阶段让我疯狂

我认为可能是params驱动的限制,但我没有关联样式params过滤器的好例子

由于

艾伦

1 个答案:

答案 0 :(得分:0)

经过调试,包括Chicagogrrl的!标志后,我再次调查了movies_Controller中的params.permits,并认为我必须将方法类型添加到例外列表中。我无法找到有关此语法的详细信息,但试用和错误得到了回报。

  app/controllers/movies_controllers.rb (excerpt)
 ......
     # Never trust parameters from the scary internet, only allow the white list through.
      def movie_params
       params.require(:movie).permit(:title,:description, :rating, :role, :deleted_roles=>[], 
        :new_role=> ['person_id', 'name'])
     end

...

delete_roles =&gt; []接受数组参数并处理movies.rb中的delete_roles方法 new_role =&gt; ['person_id','name']接受new_role个体参数。

我希望这可以节省其他人的时间,如果有人需要的话,请再次感谢Alan