2015-04-14 2 views
0

Я пытаюсь написать приложение, которое должно будет взаимодействовать с POST, но у меня возникают проблемы с доступом к параметрам. Это не значит, что сейчас полезно, но я просто пытаюсь выполнить флеш результат формы. Согласно Google Дев инструментов, параметр POST установлен в 1.Параметры Rails POST не доступны в контроллере

Вот мой routes.rb файл

devise_scope :user do 
    put 'users/toggle_activation' => 'users/sessions#toggle_activation' 
    get 'users/sign_out' => 'users/sessions#destroy' 
    post 'pages/home' => 'users/sessions#activities' 
end 

Это контроллер в вопросе

def activities 
    params.permit(:tennis) 
    current_user.save 
    flash[:notice] = params[:tennis] 
    redirect_to root_path 
    end 

Это код формы

<%= form_for :user do |f| %> 
<%= f.check_box :tennis %> 
<%= f.submit %> 
<% end %> 

Любая помощь приветствуется.

ответ

1

Если вы используете «form_for», тогда имя check_box будет выглядеть как «пользователь [теннис]», а не только «теннис». Просмотрите источник в своем браузере, и вы должны это увидеть.

Сделайте что-то вроде следующего в вашем методе контроллера (хотя я не уверен, как он будет вызван с помощью «form_for: user», потому что ваш маршрут «действия» не указан в ваших маршрутах.rb в приведенном выше коде) :

user_params = params.require(:user).permit(:tennis) 
flash[:notice] = user_params[:tennis] 
+0

Если у меня нет модели для связи с формой, следует ли использовать что-то другое вместо form_for? – Suavocado

+0

@ user3833362 yup, form_tag http://guides.rubyonrails.org/form_helpers.html#dealing-with-basic-forms – forthowin

+0

Я редактировал мой контроллер, чтобы использовать метод выше, и это сработало! Спасибо за ваше время – Suavocado