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 все еще =s 3, и нет сообщения об ошибке.

Кто-нибудь может дать мне подсказку о том, что я сделал неправильно? Спасибо!

Ниже приведено все содержимое моего файла rout.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 ответ

Решение

Обновить

Добавить newmeth действие в вашем файле маршрутов:

resources :projects do
  get :newmeth
  resources :comments
end

Также я настоятельно рекомендую вам прочитать руководство по маршрутизации Rails.


Вместо

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

Пытаться

<%= link_to 'Close', newmeth_projects_path %>

Это может не работать в зависимости от того, как вы настроили свои маршруты, можете ли вы вставить соответствующие строки в свой вопрос?

Другие вопросы по тегам