我有一个名为projects的模型,它有一个属性:opstatus,我想将其设置为3(opstatus是一个int)。当用户点击以下链接时,我需要发生这种情况:
<%= link_to 'Close', projects_path, :action => :newmeth %>
为此,我创建了方法(在projects_controller中):
def newmeth
@project.update_attribute(:opstatus, 3)
end
但是当用户点击链接时,什么也不会发生!数据库告诉我opstatus仍然=s3,并且没有错误消息。
有人能告诉我我做错了什么吗?谢谢
以下是我的routes.rb文件的全部内容
Rails.application.routes.draw do
get 'sheetread/show'
get 'sheetread' => 'sheetread#show'
get 'users/index'
get 'users/new'
get 'welcome/index'
get 'signup' => 'users#new'
get 'login' => 'sessions#new'
post 'login' => 'sessions#create'
delete 'logout' => 'sessions#destroy'
resources :users
resources :spreadsheets
resources :projects do
resources :comments
end
root 'welcome#index'
更新
将newmeth
操作添加到路由文件:
resources :projects do
get :newmeth
resources :comments
end
此外,我强烈建议您阅读Rails路由指南。
代替
<%= link_to 'Close', projects_path, :action => :newmeth %>
尝试
<%= link_to 'Close', newmeth_projects_path %>
它可能不起作用,这取决于你如何设置路线,你能在你的问题中粘贴相关的行吗?