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

时间:2015-03-23 19:46:07

标签: ruby ruby-on-rails-3 link-to update-attribute

我有一个名为projects的模型,它有一个属性:opstatus,我想将其设置为3(opstatus是一个int)。当用户点击以下链接时,我需要这样做:

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

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

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

但是当用户点击链接时,没有任何反应! 数据库告诉我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'

1 个答案:

答案 0 :(得分:0)

<强>更新

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 %>

根据您设置路线的方式,它可能无效,您可以在问题中粘贴相关的行吗?