0
Ладно, так что мои ассоциации являются:Rails 3.2 - Вложенный ресурсов Передача ID
Outlet -> has_many :monitorings
Monitoring -> belongs_to :outlet
Мои маршруты:
resources :outlets do
resources :monitorings
end
Вид:
<%= link_to new_outlet_monitoring_path(@outlet) %>
Когда я нажимаю на ссылку, протоколирует показать, что значение output_id правильно передано в качестве параметра на новую страницу. Но при сохранении записи мониторинга, outlet_id становится нулевым.
Любая помощь?
UPDATE:
# views/monitorings/_form.html.erb
<%= form_for(@monitoring) do |f| %>
<h2>Type of Monitoring</h2>
<fieldset data-role="controlgroup" >
<div class="radio-group">
<%= f.radio_button :mtype, "Full" %><%= f.label :mtype, "Full", value: "Full" %>
<%= f.radio_button :mtype, "Partial" %><%= f.label :mtype, "Partial", value: "Partial" %>
<%= f.radio_button :mtype, "None" %><%= f.label :mtype, "None", value: "None" %>
</div>
</fieldset>
<hr>
<%= f.submit "Next Step" %>
<% end %>
И контроллер:
# controllers/monitoring_controller.rb
def new
@monitoring = Monitoring.new
respond_to do |format|
format.html # new.html.erb
format.json { render json: @monitoring }
end
end
def create
@monitoring = Monitoring.new(params[:monitoring])
respond_to do |format|
if @monitoring.save
format.html { redirect_to @monitoring, notice: 'Monitoring was successfully created.' }
format.json { render json: @monitoring, status: :created, location: @monitoring }
else
format.html { render action: "new" }
format.json { render json: @monitoring.errors, status: :unprocessable_entity }
end
end
end
Я добавил его как дополнение к исходному вопросу для вас :) – Ammar
Есть два способа сделать это. Оба связаны с созданием объекта выхода в новом действии контроллера. Поэтому добавьте '@outlet = Outlet.find (params [: outlet_id]) к новому действию. Теперь у вас есть два варианта. 1: измените объявление @monitoring на '@monitoring = @ outlet.monitorings.new' и ничего не измените в вашем представлении. 2: оставьте объявление только @monitoring и измените форму form_for на 'form_for [@outlet, @monitoring] do | f |' – JohnColvin
Я использую опцию 2 и раньше не пробовал вариант 1. Я ** ДУМАЮ ** все будет работать. – JohnColvin