2013-08-15 4 views
0

Привет Я пытаюсь использовать Rails в Rest 2 - учебник по movielist с рельсами 4 и внесение изменений, когда я иду на новые рельсы. Я застрял в ассоциациях ролей фильмов. Я добавил к Movie.rbRails 4-Ассоциации -Tutorial Movielist

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 оказываю (excert ниже)

<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 то есть: «Стивен Спилберг - директор» и т.д ... Любая помощь appreciated- сводит меня с умом на этом этапе

Я думал, что это может быть PARAMS ведомые ограничения, но Я не хороший пример фильтра Params ассоциации типа

Благодарности

Алан

+0

Попробуйте изменить «создать», чтобы «создать!» чтобы выбросить ошибку. – Chicagogrrl

+0

Спасибо Chicagogrrl. Я добавил, что сделал то, что должен был сделать с самого начала, и более тщательно отлаживал вывод консоли. Проблема была связана с параметрами как expeted, и как только я понял синтаксис для добавления методов в params.permits, он работал нормально. Выиграли, повторите эту ошибку, поэтому, возможно, стоило двух дней вытягивать волосы. еще раз спасибо . Я добавил синтаксис, который я использовал в разделе ответа, в случае его интереса –

ответ

0

После отладки, включая флаг! Chicagogrrl, я снова исследовал params.permits в movies_Controller и полагал, что я должен добавить типы методов к списку исключенных. Я не мог найти подробную информацию о синтаксисе для этого, но пробная версия и ошибка окупились.

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 => [] принимает Params массив и процесс к методу delete_roles в movies.rb NEW_ROLE => [ 'person_id', 'имя'] принимает новые параметры new_role.

Я надеюсь, что это спасает кто-то другое некоторое время andIf кто нуждается больше информации просто спросите еще раз спасибо Alan

Смежные вопросы