2015-02-16 2 views
0

Код работает нормально, если я редактирую и изменяю значение, но если я обновляю то же значение, он создает новую запись.Обновление создания новой записи, если значения не изменены

Я просто слежу за рубиновыми учебниками и застрял в этой проблеме. Я довольно новичок в рубинах и рельсах.

Контроллер: articles_controller.rb

class ArticlesController < ApplicationController 

def create 
    #render plain: params[:article].inspect 
    @article = Article.new(article_params) 

    if @article.save 
     redirect_to @article 
    else 
     render 'new' 
    end 
end 

def new 
    @article = Article.new 
end 

def show 
    @article = Article.find(params[:id]) 
end 

def index 
    @articles = Article.all  
end 

def edit 
    @article = Article.find(params[:id]) 
end 

def update 
    @article = Article.find(params[:id]) 

    if @article.update(article_params) 
     redirect_to @article 
    else 
     render 'edit' 
    end 
end 


private 
    def article_params 
    params.require(:article).permit(:title_article, :text_article, :author_article) 
    end 

end 

Форма: _form.html.erb

<% if @article.errors.any? %> 
    <div id="error_explanation"> 
     <h2> 
     <%= pluralize(@article.errors.count, "error") %> prohibited 
     this article from being saved: 
     </h2> 
     <ul> 
     <% @article.errors.full_messages.each do |msg| %> 
      <li><%= msg %></li> 
     <% end %> 
     </ul> 
    </div> 
<% end %> 

<p> 
    <%= f.label :title_article ,"Title" %><br> 
    <%= f.text_field :title_article %> 
</p> 

<p> 
    <%= f.label :text_article ,"Content" %><br> 
    <%= f.text_area :text_article %> 
</p> 

<p> 
    <%= f.label :author_article ,"Author" %><br> 
    <%= f.text_field :author_article %> 
</p> 

<p> 
    <%= f.submit "Submit" %> 
</p> 
<% end %> 

Новая статья Страница: new.html.erb

<h1>Edit Page</h1> 

<%= render 'form' %> 

<%= link_to 'Back', articles_path %> 

Редактировать статьи Страница: edit.html.erb

<h1>New Page</h1> 

<%= render 'form' %> 

<%= link_to 'Back', articles_path %> 
+0

В интерфейсе обновления, когда вы вводите то же самое снова в полях, а затем над кодом вставляете новую запись, не обновляющуюся? – Thorin

+0

Пожалуйста, покажите свою форму. – BroiSatse

+0

@ Ансар да. На странице редактирования, если я не сделаю никаких изменений и нажмите «Отправить», она создаст новую запись, тогда как когда я что-то меняю, она меняет одну и ту же запись. – user2887501

ответ

0

Как @Cyril DD говорит в комментарии, ваш код в _form.html.erb должен иметь <%= form_for(@article) do |f| %> в первой строке. (Я предполагаю, что это должен был поднять синтаксическую ошибку ...)

_form.html.erb

<%= form_for(@article) do |f| %> 
    <% if @article.errors.any? %> 
    <div id="error_explanation"> 
     <h2> 
     <%= pluralize(@article.errors.count, "error") %> prohibited 
     this article from being saved: 
     </h2> 
... 

Я скопировал все свои коды и добавил строку. Тогда все сработало нормально. Он не создавал новую статью, даже если в редактировании не было изменений.

Смежные вопросы