2016-12-22 4 views
0

у меня есть маршруты, как это:добавляющие дополнительные параметры трактов динамически рубин на рельсах

resources :lesson_plans do 
    resources :videos 
end 

, а также

resources :subjects do 
    resources :lesson_plans do 
    resources :videos 
end 
end 

Теперь я хочу, чтобы создавать динамические пути и добавления условных параметров к ним.

Если у меня есть URL, как:

http://localhost:3000/teacher/katherine-fleming/subjects/3/lesson_plans/3 

путь теперь:

http://localhost:3000/teacher/katherine-fleming/subjects/3/lesson_plans 
/3/videos/new 

, но если у меня есть URL, как это:

http://localhost:3000/teacher/carmel-cynthia/lesson_plans/68 

путь является:

http://localhost:3000/teacher/carmel-cynthia/lesson_plans//videos/new.68 

, но это должно быть в качестве моего требования:

http://localhost:3000/teacher/carmel-cynthia/lesson_plans/68/videos/new 

код, который я пытаюсь это:

Код:

<% subject_path = params[:subject_id].present? ? 'subject_' : '' %> 
<% subject_var = params[:subject_id].present? ? @subject : '' %> 

Кнопка:

<%= link_to '+ New Video', send("new_teacher_teacher_# 
{subject_path}lesson_plan_video_path", @teacher, subject_var, @lesson_plan), 
remote: true, class: "btn btn-info plans-items-btn" %> 

Более лучший способ справиться с этим. В основном subject_id - это то, что у меня есть опция для обоих случаев.

+0

'получить 'учитель /: teacher_id (/: субъекты (/: subject_id))/lesson_plans /: lesson_plan_id' =>«видео # new'' - Что о том, что-то вроде этого в верхней части вашего 'routes.rb'? – dp7

+0

Я попробовал учитель 'get '/: teacher_id (/: subject (/: subject_id))/lesson_plans /: lesson_plan_id' => 'videos # new' post 'teacher /: teacher_id (/: subject (/: subject_id)))/lesson_plans /: lesson_plan_id '=>' lesson_plans # show'', и он говорит: 'ActionController :: RoutingError (Нет совпадений маршрута [GET]"/teacher/carmel-cynthia/lesson_plans/68 "):' – LearningROR

+0

Не можем ли мы использовать маршруты ресурсов? он может включать в себя около 30 маршрутов для дополнительных параметров для предоставления в файле маршрутов. Лучше работать? У меня есть 30 маршрутов с и без subject_id. поэтому вместо 60 маршрутов линий. Я хочу работать с минимальными строками кода. :) – LearningROR

ответ

0
<% 
    path = if params[:subject_id].present? 
      new_teacher_subject_lesson_plan_video_path(@teacher, @subject, @lesson_plan) 
     else 
      new_teacher_lesson_plan_video_path(@teacher, @lesson_plan) 
     end 
%> 

, а затем

<%= link_to '+ New Video', path, remote: true, class: "btn btn-info plans-items-btn" %> 
+0

Спасибо за ответ. Да, он выполняет эту работу, но не может ли мы добавить параметры в пути или у вас есть какие-либо ограничения с невозможной вещью? – LearningROR

+0

Ну, когда ваш 'subject_var' равен нулю, вы будете отправлять что-то вроде' new_teacher_lesson_plan_video_path (@teacher, nil, @lesson_plan) 'и я не думаю, что это сработает. – gabrielhilal

+0

Спасибо за ввод. :) – LearningROR

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