當談到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 %>
有什麼方法,我可以調用控制器的動作沒有一個路線?我覺得它會使工作流程更加簡潔。
我認爲它不是最好的做法,以增加這樣的行爲給用戶的控制器。如果您使用的是rails 4,或者只是創建一個包含與Topic模型相關的所有操作的topics_controller,則可以嘗試關注。 – mohameddiaa27 2014-10-29 10:55:30
@Swaathi我有同樣的問題。我和cakephp一起工作,當你在控制器'Car'中立即創建一個動作'show_all'時,你有路徑'localhost/Car/show_all' ...我在rails – inye 2014-10-29 15:36:59
@ mohameddiaa27中看到了一些像這樣的「mark_read」和「mark_all_read」是用戶控制器中的操作。這個視圖是用戶顯示頁面。每次需要訪問某個操作時,我都會關心是否需要創建路由。由於URL方案暴露出來,我覺得這會讓應用程序非常脆弱。 – 2014-10-31 03:01:42