2011-07-17 58 views
0

我有這個作爲我的創建方法,我的PostsController的Rails 3:控制器中創建方法,Post.new代替current_user.posts.build

class PostsController < ApplicationController 
    def create 
     @user = current_user 
     @post = current_user.posts.build(params[:post]) 
     if @post.save 
      flash[:success] = "Post created!" 
      redirect_to root_path 
     else 
      @feed_items = current_user.feed.paginate(:per_page => "10", :page => params[:page]) 
      render 'pages/home' 
     end 
     end 

裏面我想改變它稍微還成立:user_id => params [:post] [:user_id]。我想這個,但它不包括current_user,所以我想知道這些創建方法是如何不同的,我怎麼會保持相同的功能在current.user.posts.build(params [:post])與Post.new?

def create 
    @post = Post.new :user_id => params[:post][:user_id] 
    @post.update_attributes params[:post] 
    if @post.save 
    flash[:success] = "Post created!" 
    redirect_to root_path 
    else 
    @feed_items = current_user.feed.paginate(:per_page => "10", :page => params[:page]) 
    render 'pages/home' 
    end 
end 
end 
+0

剛一說明:根據您的預期目的,你可能不希望用戶ID的幾乎任何人可分配?如果沒有,那麼你應該使user_id attr_accessible。 – Zabba

+0

對不起,但你能詳細說明一點,我是編程和軌道新手,所以我不完全確定你的意思。我明白attr_accessible允許從表單進行批量分配。我現在沒有我的attr_accessible下的user_id。我正在尋找將帖子的user_id設置爲創建帖子本身的用戶的user_id。謝謝。 –

回答

1

在您的文章模型belongs_to的:用戶

def create 
    @post = Post.new(params[:post]) 
    @post.user = current_user 
    if @post.save 
    flash[:success] = "Post created!" 
    redirect_to root_path 
    else 
    @feed_items = current_user.feed.paginate(:per_page => "10", :page => params[:page]) 
    render 'pages/home' 
    end 
end 
end 
+0

是的,我確實有這種關係設置。 @ post.user = current_user的用法如下:user_id => params [:post] [:user_id]?我需要先設置user_id。 –

+0

是的。嘗試一下,看看你的自我 – Uchenna

+0

感謝您的幫助。我需要在Post.new(params [:post])之後首先設置post_user_id,這就是爲什麼我在嘗試上面的代碼,其中@ post.update_attributes params [:post]是第二個 –

相關問題