Я довольно много любитель, когда дело доходит до Rails. Я получил это, чтобы работать, однако мне кажется, что код недостаточно эффективен.Является ли это лучшей практикой для маршрутизации в Rails?
Есть ли способ ускорить это? А также это, как профессионал мог бы это сделать?
Контроллер
def mark_read
@topic = Topic.find(params[:id])
@topic.mark_as_read! :for => current_user
redirect_to user_path(current_user.slug)
end
def mark_all_read
Topic.mark_as_read! :all, :for => current_user
redirect_to user_path(current_user.slug)
end
Маршруты
resources :users do
member do
post :mark_read
post :mark_all_read
end
end
Посмотреть
<% if current_user.id == @user.id %>
<%= link_to "Mark all as read", mark_all_read_user_path, :method=> :post %>
<h4> List of posts unread by you </h4>
<% @unread.each do |topic| %>
<% if @user.following?(Product.find(topic.product_id)) %>
<li> <%= topic.title %> <%= link_to "Mark as read", mark_read_user_path(topic), :method=> :post %> </li>
<% end %>
<% end %>
Есть ли каким-то образом, что я мог бы вызвать в контроллере без маршрута? Я чувствую, что это упростит рабочий процесс.
Я думаю, что его не лучшая практика, чтобы добавить такие действия для контроллера пользователя. Вы можете попробовать проблемы, если используете рельсы 4 или просто создаете topic_controller, который включает в себя все действия, связанные с моделью темы. – mohameddiaa27
@Swaathi У меня такой же вопрос. Я работал с cakephp, и когда вы создаете действие 'show_all' в контроллере' Car' inmediatelly, у вас есть путь 'localhost/Car/show_all' ... Я смотрю что-то вроде этого в rails – inye
@ mohameddiaa27« mark_read »и «mark_all_read» - это действия в пользовательском контроллере. И это представление - страница показа пользователей. Меня просто беспокоило, нужно ли мне создавать маршрут каждый раз, когда мне нужно получить доступ к действию. Я чувствую, что это делает приложение очень уязвимым, так как схема URL разоблачена. –