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



我有一个名为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 %>

它可能不起作用,这取决于你如何设置路线,你能在你的问题中粘贴相关的行吗?

相关内容

  • 没有找到相关文章

最新更新