【发布时间】:2014-08-16 00:09:38
【问题描述】:
我正在尝试清理我的路由。我有一个可以登录和创建应用程序的公司模型。他们可以创建几个。
目前这是我的设置:
路线
get 'applications/edit/:id', to: 'applications#edit'
Applications_controller
def edit
@application = current_company.applications.find(params[:id])
end
def update
@application = Application.find(params[:id])
if @application.update(application_params)
redirect_to dashboard_path
else
render 'edit'
end
end
每家公司都有自己的仪表板。这是我的代码 /dashboard
您的活跃应用程序
<% @applications.all.each do |f| %>
<%= link_to "Application", show_path + "/#{f.id}" %> | <%= link_to "Edit", edit_application_path("#{f.id}") %>
<br>
<% end %>
现在这一切正常,如果我去 edit_application/11 f.ex 我会看到它。
我想改变的是从 URL 中删除 :id。
从而使其更安全并给人一种更好的感觉。现在我花了 5 分钟才意识到我可以更改 :id url 并编辑所有内容。因此,我添加了 current_company.applications 来阻止它。然而我觉得这不是很安全。
【问题讨论】:
-
我不明白。您希望参数不在 url 中?
-
我想更改它,而不是这个 /edit/12 (其中 12 是当前 ID f.ex),它只是说 /edit 并从 @applications 中的链接获取 ID .all.each
-
试试:
get 'applications/edit/:id', to: 'applications#edit' as: :edit_app
标签: ruby-on-rails