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 %>
Это может не работать в зависимости от того, как вы настроили свои маршруты, можете ли вы вставить соответствующие строки в свой вопрос?