代码之家  ›  专栏  ›  技术社区  ›  Bassie

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

  •  0
  • Bassie  · 技术社区  · 9 年前

    我有一个名为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 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'
    
    1 回复  |  直到 9 年前
        1
  •  0
  •   mbillard    9 年前

    使现代化

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

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