Ruby Rails - 如何通过 link_to 为属性分配新值?

Ruby Rails - How can I assign a new value to an attribute via link_to?

我有一个名为 projects 的模型,它有一个属性 :opstatus,我想将其设置为 3(opstatus 是一个 int)。当用户单击以下 link:

时,我需要发生这种情况
<%= link_to 'Close', projects_path, :action => :newmeth %>

为此我创建了方法(在 projects_controller 中):

def newmeth
    @project.update_attribute(:opstatus, 3)
end

但是当用户点击 link 时,没有任何反应! 数据库告诉我opstatus还是=s 3,也没有报错信息。

谁能告诉我我做错了什么? 谢谢!

下面是我的routes.rb文件的全部内容

Rails.application.routes.draw做

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 routing guide


而不是

<%= link_to 'Close', projects_path, :action => :newmeth %>

尝试

<%= link_to 'Close', newmeth_projects_path %>

根据您设置路线的方式,它可能无法正常工作,您可以将相关行粘贴到您的问题中吗?