У меня есть модель с именем Student
, которая имеет в ней атрибут University_ID
.Создание пользовательских маршрутов, в которых вместо идентификатора используется атрибут модели в Rails
Я создал пользовательское действие и маршрут, который отображает деталь конкретного учащегося по следующей ссылке: students/2/details
т.е. students/:id/details
Однако, я хочу, чтобы иметь возможность позволить пользователю использовать университетский ID вместо идентификатор базы данных, так что следующий будет работать, например students/X1234521/details
т.е. students/:university_id/details
Мой файл маршрут выглядит следующим образом на данный момент:
resources :students
match 'students/:id/details' => 'students#details', :as => 'details'
Однако это использует Student_ID в отличие от University_ID, и я пробовал делать
match 'students/:university_id/details' => 'students#details', :as => 'details'
, но это соответствует только идентификатору Student_ID, а не идентификатору University_ID.
Мой контроллер выглядит так, если это поможет в любом случае:
def details
@student = Student.find(params[:id])
end
Я также пытался делать @student = Student.find(params[:university_id])
но нет, ничего не получалось.
Или попробуйте 'Student # find_by_university_id (Params [: univeristy_id])'. 'Student # where (university_id: params [: university_id])' вернет массив студентов. –
@JimStewart, в каком действии я помещаю этот код: '@student = Student.where (university_id: params [: university_id]). First'? – omarArroum
Не существует способа его взаимозаменяемости i.e Я могу либо использовать 'student_id', либо' university_id'? – omarArroum