以下是我的应用中的路线:
user@localhost:~/HelloWorld$ rake routes
Prefix Verb URI Pattern Controller#Action
biodata_store GET /biodata/store(.:format) biodata#store
greet_welcome GET /greet/welcome(.:format) greet#welcome
greet_wishes GET /greet/wishes(.:format) greet#wishes
time_htime GET /time/htime(.:format) time#htime
login_auth POST /login/auth(.:format) login#auth
POST /biodata/store(.:format) biodata#store
greet GET /greet(.:format) greet#index
time GET /time(.:format) time#index
login GET /login(.:format) login#index
biodata GET /biodata(.:format) biodata#index
user@localhost:~/HelloWorld$
在上面的路线中,我有一个名为'login'的控制器。因此,当我调用'localhost:3000 / login'时,它会提供'index.html'文件 放在'app / view / login /'目录中。一旦我提交登录表单,输入的数据就会转到'/ login / auth'动作。我在这 在index.html文件中将方法设置为POST。所以,我只能直接从浏览器获取'/ login'而不是'/ login / auth'页面。
与此类似,我创建了一个'/ biodata'控制器,它提供输入表单以获取用户的详细信息。一旦我提交表格, 使用POST方法将数据传递给'/ biodata / store'。所以,我希望我无法直接访问'/ biodata / store'控制器 浏览器。但在我的应用程序中,我能够访问它。如何解决这个问题?
/login --> User can access directly.
/login/auth --> User should not access this page directly.
如上所述,登录控制器正常工作。但是下面的biodata控制器没有正常工作。
/biodata --> User can access directly.
/biodata/store --> User should not access this page directly.(But now it is accessible).
我希望这是由于命名助手。因为控制器/ biodata / store的命名助手中没有条目。那么如何解决这个问题?
routes.rb中:
Rails.application.routes.draw do
get 'biodata/store'
get 'greet/welcome'
get 'greet/wishes'
get 'time/htime'
post 'login/auth'
post 'biodata/store'
get 'greet' => 'greet#index'
get 'time' => 'time#index'
get 'login' => 'login#index'
get 'biodata' => 'biodata#index'
end
答案 0 :(得分:2)
用户可以直接访问此页面,因为您有
get 'biodata/store'
路线中的路线.rb。只需删除它就可以了,