моих иерархий данных «Case» имеет много «Категории» имеетрельсы маршруты не могут перенаправлять правильно
Я последовал документ многая «Задачи», что ресурсы не должны быть вложен более чем на 1 уровень глубокого. Поэтому я использую неглубоко, как показано ниже:
моего routes.rb
resources :cases do
resources :categories, :shallow => true do
resources :tasks, :shallow => true
end
end
реки маршруты
category_tasks GET /categories/:category_id/tasks(.:format) tasks#index
POST /categories/:category_id/tasks(.:format) tasks#create
new_category_task GET /categories/:category_id/tasks/new(.:format) tasks#new
edit_task GET /tasks/:id/edit(.:format) tasks#edit
task GET /tasks/:id(.:format) tasks#show
PATCH /tasks/:id(.:format) tasks#update
PUT /tasks/:id(.:format) tasks#update
DELETE /tasks/:id(.:format) tasks#destroy
case_categories GET /cases/:case_id/categories(.:format) categories#index
POST /cases/:case_id/categories(.:format) categories#create
new_case_category GET /cases/:case_id/categories/new(.:format) categories#new
edit_category GET /categories/:id/edit(.:format) categories#edit
category GET /categories/:id(.:format) categories#show
PATCH /categories/:id(.:format) categories#update
PUT /categories/:id(.:format) categories#update
DELETE /categories/:id(.:format) categories#destroy
cases GET /cases(.:format) cases#index
POST /cases(.:format) cases#create
new_case GET /cases/new(.:format) cases#new
edit_case GET /cases/:id/edit(.:format) cases#edit
case GET /cases/:id(.:format) cases#show
PATCH /cases/:id(.:format) cases#update
PUT /cases/:id(.:format) cases#update
DELETE /cases/:id(.:format) cases#destroy
root GET / cases#index
Я положил взгляд категории в случае/show.html.erb чтобы показать категории в этом случае.
URL-адрес из случаев # шоу LOCALHOST: 3000/корпуса/9
, если я хочу, чтобы создать новую категорию ссылка будет локальный: 3000/футляры/9/категории/новый
он хорошо работает в тех случаях redirect_to # показать страницу с моей категории # создать действие
def create
@case = Case.find(params[:case_id])
@category = Category.new(category_params)
@category.case = @case
@case.member = current_member
if @category.save
redirect_to case_path(@case)
else
render :new
end
end
, но когда я пытаюсь изменить категорию и обновить его
url изменить на localhost: 3000/categories/2/изменить что у меня больше нет case_id.
не может перенаправить обратно в случае # показать страницу LOCALHOST: 3000/случаи/9
Я попытался написать подобный код, как мой создать действие, как показано ниже
def update
@case = Case.find(params[:case_id])
@category = Category.find(params[:id])
@category.case = @case
if @category.update(category_params)
redirect_to case_path(@case)
else
render :edit
end
end
но это не может получить case_id и сообщение об ошибке, как показано ниже
Couldn't find Case with 'id'=
как я могу перенаправить к локального хоста: 3000/случаи/9 после редактирования и обновления «категории»?
Вы хотите изменить ситуацию, когда редактируете эту категорию? – Jayaprakash
Привет, @Jayaprakash Я не хочу изменять случай, когда редактирую категорию. категории относятся к делу. – sarahbones
От вашего 'localhost: 3000/cases/9/categories/new'. Когда категория была создана успешно. Вы проверили его 'case_id'? Это 9 или «ноль»? Я думаю, есть некоторая ошибка здесь –