2013-09-22 117 views
-1

这是我new.html.erb更新记录,如果存在其他创造新纪录的轨道

<%= form_for @post do |f| %> 
    <%= f.text_field :title,placeholder: 'title' %> 
    <%= f.hidden_field :gen_id,value: 55 %> #55 is just for testing 
    <%= f.submit 'Submit' %> 
<% end %> 

这是我的控制器

def create 
     @post = Post.find_by_id params[:gen_id] 
     if @post 
     @post.update(post_params) 
     else 
      @post = Post.new 
      if @post.save! 
       flash[:success] = 'Post added successfully' 
       redirect_to action: :new 
      else 
       flash[:error] = 'Post cannot add. Please try again after some time' 
       redirect_to action: :new 
      end 
     end 
    end 

上面的代码只是创造新的记录,每次

+0

你在轨道3使用强PARAMS? – Santhosh

+0

@acts_as_geek我正在使用rails 4 – overflow

+1

有一个'find_or_create_by(...)'方法 – j03w

回答

3

gen_id是邮政形式的一部分。但是你正在寻找它的顶级水平。你需要这样做:

@post = Post.find_by_id params[:post][:gen_id] 

@post = Post.where(id: params[:post][:gen_id]).first 
+0

是的,我改变了它。它进入这个循环'if @ post',但我无法在我的表中找到任何更新。我也尝试过'update_attributes'。还有其他的变化吗? – overflow

相关问题