Как вы перенаправляете ресурс на контроллер? Я использую ресурс на странице редактирования для другой модели, поэтому мои действия сначала направляются на контроллер модели.Маршрутизация ресурса контроллеру
Эта страница редактирования запросов от
class Grandstreamers::ResellersController < ApplicationController
def new
end etc...
Я пытаюсь маршрутизировать запросы здесь вместо:
Grandstreamers::CertificatesController < ApplicationController
def new
end
def update
end etc...
Это моя форма соображениях/grandstreamers/реселлеров/edit.html .erb
<%= form_for @untrained, :url => certificates_update_path(@untrained) do |f| %>
<p> Trained Users </p>
<%= select_tag "certificate[user_id]", options_for_select(@current_trained.collect{|x| [x.name, x.id]}), {:multiple => :multiple} %>
<%= f.submit "Un-Train", class: "btn btn-large btn-primary" %>
<% end %>
<%= form_for @trained, :url => certificates_create_path(@trained) do |f| %>
<p> Non-Trained Users </p>
<%= select_tag "certificate[user_id]", options_for_select(@non_trained.collect{|x| [x.name, x.id]}), {:multiple => :multiple} %>
<%= f.submit "Train", class: "btn btn-large btn-primary" %>
<% end %>
Мой маршрут:
resources :certificates
Обратите внимание, что
:url => certificates_create_path
не правильно и не работает. Есть ли способ указать этот маршрут в файле routes.rb или в моей форме? Спасибо
EDIT
Это мой resellers_controller редактировать(), который маршруты в первую очередь.
@trained = Certificate.new(params[:certificate])
#Trying to get to certificates_controller update. Then update the :attend to "No"
#@untrained = Certificate.new(params[:certificate])
#@untrained = Certificate.find(params[:id])
#@untrained = Certificate.find_by_user_id(params[:id])
@untruined не определен, я не уверен, как его заставить просто перейти к моему контроллеру сертификатов. Для @trained я могу определить его, поскольку он еще не создан и не дает мне ошибок, когда он не может найти правильное значение.
Мои сертификаты контроллер, который использует создание(), но не может получить обновление()
def create
@trained = Certificate.new(params[:certificate])
if @trained.save
@trained.update_attributes(attend: "Yes")
end
redirect_to grandstreamers_resellers_path
end
def update
@untrained = Certificate.find(params[:id])
@untrained.update_attributes(attend: "No")
redirect_to grandstreamers_resellers_path
end
Major Issue Переменная экземпляра @trained и @untrained должны быть определены как-то в reseller_controller. Что я могу определить для загрузки страницы редактирования?
Часть Решение
я определил это в моем resellers_controller и загружает страницу редактирования в настоящее время.
@untrained = User.find(params[:id])
Теперь я получаю эту ошибку:
No route matches [PUT] "/certificates.1"
Что вы здесь делаете? – arun15thmay
Я выделил то, что я пытаюсь сделать. – DDDD
запустите «маршруты рейка», чтобы увидеть ваши маршруты .. обратите внимание, что ваш путь обновления для сертификатов - сертификат (_path) (PUT), а не certificate_update (_path) –