У меня есть рельсы проект со следующим:Рельсы, создающие объекты ассоциации: как передать информацию обратно другому контроллеру?
record.rb
class Track < ActiveRecord::Base
has_many :records
end
track.rb
class Record < ActiveRecord::Base
belongs_to :track
end
(Кстати, я имею в виду ассоциации этот путь, не нравится в музыкальной индустрии! В этом контексте трек похож на конкретный класс, и запись будет отдельным экзаменом. Каждый трек имеет несколько записей, каждая запись может принадлежать только одному треку и т. д.)
Затем в tracks/show.html.erb
у меня есть список всех записей, относящихся к определенному треку. В нижней части, что я хочу иметь ссылку «Добавить», то есть что-то вроде
<%= link_to 'Add', new_record_path %>
Я вполне Рельсы нуб и мне известно, что этот вопрос, вероятно, было предложено раньше. Тем не менее, я не знаю, как подать allthedifferent бит и кусочки информации там, где есть моя проблема. Я попытался прохождения трека в качестве аргумента в качестве такого
<%= link_to 'Add', new_record_path(@track) %>
и определении метода new
в records_controller.rb следующим
def new(track)
@record = Record.new
@record.track_id = track.id
end
, но я получил ошибку wrong number of arguments (0 for 1)
, который я думал, что сбивает с толку, так как я указал в контроллере new
должен принять аргумент. Во всяком случае, я подозреваю, что этот метод неправильный или, по крайней мере, не-Ruby-like, поскольку во всех вопросах/учебниках, на которые я смотрел, ничего подобного не появилось. Я был бы признателен, если бы кто-нибудь объяснить, как я могу осуществить это прямолинейно (и функционально, конечно) ...
Спасибо за ваше время ... Я сделал то, что вы сказали, но он не работает, когда я делаю запись, но track_id не сохраняется. (В строке '@record = ...' я переключил 'track.id' out на' @ track.id', который, как я полагаю, был опечаткой). есть ли что-то еще очевидное, что мне не хватает? –
@ Thornshadow17432: Я обновил свой ответ следующим шагом, потому что вам нужно передать 'track_id' из формы обратно в метод' create'. – spickermann
Спасибо! Скрытое поле сделало трюк. –