嗨,我正在尝试使用rails on Rest 2-电影列表教程和Rails 4,并在我准备新的rails时进行调整。我被困在电影角色的联想中。我已经添加到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>它呈现列表以供选择,但当我提交时-没有任何内容写入数据库表。如果我在数据库中手动输入数据,那么它会显示在电影列表页面上,即:“斯蒂芬·斯皮尔伯格-导演”等。任何感谢的帮助-在这个阶段让我发疯
我认为这可能是参数驱动的限制,但我没有一个很好的关联样式参数过滤器的示例
谢谢
艾伦
发布于 2013-08-16 17:22:25
在调试包括Chicagogrrl的!标志之后,我再次研究了movies_Controller中的params.permits,并认为我必须将方法类型添加到excepted列表中。我找不到关于这个语法的详细信息,但试验和错误得到了回报。
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=>[]接受数组参数,并处理到movies.rb中的delete_roles方法。new_role _role=>‘person_id’,'name‘接受新的单独参数。
我希望这能为其他人节省一些时间andIf任何人需要更多的信息只需要再次问谢谢艾伦
https://stackoverflow.com/questions/18255260
复制相似问题