Rails, проблема в форме, пытающейся использовать метод put http - PullRequest
2 голосов
/ 20 июля 2009
<% form_ tag user_path(@user), :method => :put do %>

Это моя форма, поэтому я хочу получить доступ к методу обновления моего UsersController, я установил map.resources: users и сгенерированные RESTful пути:

users     GET    /users(.:format)          {:action=>"index", :controller=>"users"}          
          POST   /users(.:format)          {:action=>"create",:controller=>"users"}
new_ user GET    /users/new(.:format)      {:action=>"new", :controller=>"users"}
edit_user GET    /users/:id/edit(.:format) {:action=>"edit", :controller=>"users"}
user      GET    /users/:id(.:format)      {:action=>"show", :controller=>"users"}
          PUT    /users/:id(.:format)      {:action=>"update", :controller=>"users"}
          DELETE /users/:id(.:format)      {:action=>"destroy", :controller=>"users"}

Поэтому я пытаюсь отправить в user_path (@user), используя метод PUT HTTP, и он возвращается с:

Unknown action

No action responded to 1. Actions: create, destroy, edit, index, logged?, new, show and update

Так что, очевидно, я не знаю, как заставить это работать, поэтому спасибо заранее.

Ответы [ 5 ]

5 голосов
/ 20 июля 2009

Если вы используете ресурсы RESTful (и так и должно быть), попробуйте использовать form_for, а не form_tag ... с полной настройкой, подобной этой:

<% form_for :user, @user, :url=>user_path(@user), :html=>{:method=>:put} do |f| %>

  #this scopes the form elements to the @user object, eg.
  <%= f.text_field :first_name %>

<% end %>

Ознакомьтесь с API документами , чтобы узнать больше.

2 голосов
/ 30 сентября 2012

Слишком поздно, чтобы ответить, но проверьте это http://guides.rubyonrails.org/form_helpers.html#how-do-forms-with-put-or-delete-methods-work

Не все браузеры поддерживают PUT, поэтому вы используете POST со скрытым вводом, утверждая, что метод PUT

1 голос
/ 20 июля 2009

Просто выстрел в темноте, но вы пробовали это?

<% form_tag :url=>user_path(@user), :html=>{:method=>:put} do %>
0 голосов
/ 08 июля 2010

Я столкнулся с этой проблемой при попытке использовать модель без таблиц ( Модель Rails без базы данных ).

После некоторого быстрого поиска в файле actionpack form_helper.rb я нашел решение. Добавьте это к вашей модели:

def new_record?; false; end

В моем случае моя модель всегда строится с нуля, так что это было необходимо, чтобы "обмануть" Rails, чтобы он воспринимался как существующий объект и, таким образом, выполнял PUT, а не POST.

0 голосов
/ 22 июля 2009

Вы перезапустили свой сервер? Мой route.rb никогда не перезагружается правильно, если я обновляю его во время работы сервера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...