我已经阅读了关于这个主题的一些其他问题和答案,但我仍然非常困惑。
我有一个带有标准功能的用户模型。我想添加一个类似于编辑/更新的页面,允许用户连接API。
我在控制器中构建了以下功能:
def deviceConnectEdit
@user = User.find(params[:id])
end
def deviceConnectUpdate
@user = User.find(params[:id])
if @user.deviceConnectUpdate_attributes(user_params)
flash[:success] = "Device Connected"
redirect_to @user
else
render 'deviceConnect'
end
end
非常类似于标准编辑/更新
我还构建了两个文件deviceConnectUpdate.html.erb和deviceConnectUpdate.html.erb(目前他们有一个
语句来查看它们何时被调用。
现在我运行rake routes
users GET /users(.:format) users#index
POST /users(.:format) users#create
new_user GET /users/new(.:format) users#new
edit_user GET /users/:id/edit(.:format) users#edit
user GET /users/:id(.:format) users#show
PUT /users/:id(.:format) users#update
DELETE /users/:id(.:format) users#destroy
当我拨打foobar/users/1/deviceConnectEdit
时,我收到错误,指出路线不匹配。
如何修复此问题并添加路线。感谢
答案 0 :(得分:1)
您仍然需要在config\routes.rb
文件中声明路线。
另外,如果你想使用更多的惯用ruby(你这样做),你应该使用强调的方法名,而不是camelCase。例如device_connect_edit
不是deviceConnectEdit
。如果你不遵守惯例,你将会遇到麻烦(除非你有充分的理由离开它)。有鉴于此,我将在惯用Ruby中发布路由,并希望您更新您的方法名称: - )
resources :users do
member do
get 'device_connect_edit'
post 'device_connect_update'
end
end
此外,您可能希望强烈考虑将您的设计设置为单独的device
资源,而不是在UsersController中添加它...