Не работает действие обновления Ruby - PullRequest
0 голосов
/ 18 августа 2010

У меня есть одна модель: новая и ее контроллер: новости

Методы контроллера новостей:

    def edit
    @new = New.find(params[:id].to_i)
  end

  def update
    @new = New.find(params[:id].to_i)
    @new.update_attributes(params[:new])
    flash[:notice] = "Sikeresen frissítve"
    redirect_to news_path
  rescue ActiveRecord::RecordInvalid
    flash[:error] = "Valami hiba lépett fel"
    redirect_to edit_news_path(@new)
  end

А вот и edit.html.erb

<%= error_messages_for :news %>

<% form_for :new, :url=>news_path(@new), :html=>{:method=>:put}  do |m|%>

  <p>  <%= m.label(:title,"title: ") %>

  <%= m.text_field(:title) %></p>

  <p>

    <%= m.label(:text, "text: ") %>

    <%= m.text_area(:text) %>

  </p>

    <%= submit_tag "Save" %>

<% end %>

Работает нормально, без ошибок, поле показывалось в текстовых полях, но если я нажму кнопку отправки, я выдал неизвестную ошибку действия

Ответы [ 2 ]

3 голосов
/ 18 августа 2010

Я думаю, что это должно быть

: URL => new_path (@new)

не

: URL => news_path (@new)

хотя я запутался, думая об этом, потому что вы называете свою модель "новой".

Я НАСТОЯТЕЛЬНО рекомендую изменить название вашей модели (а также контроллера и видов), чтобы избежать путаницы. «Новый» используется в рельсах в контексте действия «новый». Если вы не измените его, у вас будут такие вещи, как «new_new_path» и «update_new_path», что в какой-то момент заставит вас плакать.

Кроме того, на самом деле не имеет смысла говорить о «новом». Единственное число «новости» не является «новым». Это очень сбивает с толку, разберитесь сейчас, прежде чем строить вокруг него что-нибудь еще.

Я бы порекомендовал "Article" или что-то похожее в качестве названия модели.

0 голосов
/ 18 августа 2010

Попробуйте это:

form_for :new, :url=>{ :action => "update" }, :html=>{:method=>:put}  do |m|
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...