В приложении Ruby on Rails, над которым я работаю (2.3.8), у меня есть модель User, у которой могут быть тренировки
class Workout < ActiveRecord::Base
belongs_to :user
end
У меня также есть отношения Тренер-> Клиент (все они привязаны к модели пользователя через таблицу соединений)
Пользователь может добавлять тренировки для себя, НО тренер может также добавлять тренировки для своих клиентов.
Я настроил маршруты следующим образом:
map.resources :workouts
map.resources :clients, :has_many => 'workouts'
Оба набора маршрутов работают (т.е. / тренировки и / клиенты / 1 / тренировки). Я обновил workouts_controller, так что в зависимости от того, есть ли client_id, я покажу другой набор тренировок
def index
if(params[:client_id])
@workouts = Workout.find_all_by_user_id(params[:client_id])
else
@workouts = Workout.find_all_by_user_id(@current_user.id)
end
У меня вопрос, как мне настроить мои представления для правильной работы. В зависимости от того, как я попал в индекс, я хочу по-разному ссылаться на экран добавления или редактирования. Должен ли я сделать все условно ...
<% if (@client.nil?) %>
<%= link_to 'New workout', new_workout_path %>
<% else %>
<%= link_to 'New workout', new_client_workout_path(@client) %>
<% end %>
... или есть какой-то более простой способ разделить эти два случая? Похоже, у меня будет много условий в представлениях и контроллерах, и я не знаю, будет ли это способ справиться с этим случаем или нет.