Почему я получаю эту ошибку? - PullRequest
0 голосов
/ 11 апреля 2011

Я получаю эту ошибку:

ActiveRecord::RecordNotFound (Couldn't find Video without an ID):
  app/controllers/videos_controller.rb:52:in `topic_update'

Это относится к этому действию в моем контроллере видео:

def topic_update
  @video = Video.find(params[:id])

  respond_to do |format|
    if @video.update_attributes(params[:video])
      format.html { redirect_to(@video) }
      format.js
    else
      format.html { render :action => "edit" }
    end
 end
end

Ошибка выдается после того, как эта форма отправляет запрос PUT:

<%= form_for @video, :url => {:action => "topic_update"}, :remote => true do |f| %>
  <div class="field">
  <%= f.text_field :topic_names, :class => "topic_field" %>
  </div>
  <%= f.submit "Add Topic", :id => 'topic_submit' %>
<% end %>

Вот что происходит по моим логам:

Started PUT "/topic/update.js" for 127.0.0.1 at Mon Apr 11 00:12:19 -0700 2011
  Processing by VideosController#topic_update as JS
  Parameters: {"video"=>{"topic_names"=>"eedefva"}}
  User Load (0.2ms)  SELECT "users".* FROM "users" WHERE "users"."id" = 57 LIMIT 1

У меня есть это в моем файле rout.rb:

resources :videos
match '/topic/update' => "videos#topic_update"

Ответы [ 2 ]

2 голосов
/ 11 апреля 2011

Это потому, что ваш метод topic_update будет обрабатываться как метод GET, где вы хотите использовать его как метод post,

попробуйте это в ваших маршрутах.rb

resources :videos do
  member do
    put 'topic_update'
  end
end

Я не проверял это, но: D

читайте здесь для получения дополнительной информации (http://guides.rubyonrails.org/routing.html)

НТН

ура

Sameera

0 голосов
/ 11 апреля 2011

По сути, вы пытаетесь обновить несуществующий (не сохраненный ранее) объект. Этот метод form_for @video добавляет параметр id, если @video ссылается на существующую запись, которая была сохранена ранее.

Пожалуйста, убедитесь, что вы вызываете процедуру обновления (показывает форму «редактировать»), только если @video соответствует сохраненной записи.

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