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 %>
根据您设置路线的方式,它可能无法正常工作,您可以将相关行粘贴到您的问题中吗?
我有一个名为 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 %>
根据您设置路线的方式,它可能无法正常工作,您可以将相关行粘贴到您的问题中吗?