2016-12-27 23 views
0

我想從表單創建帖子。這是我做了什麼,到目前爲止的工作:在每個網站上發佈新表單

查看

<%= form_for @post, url: {action: "create"}, html: { multipart: true } do |form| %> 
    <%= form.text_field :description %> 
    <%= form.file_field :image %> 
    <%= form.hidden_field :user_id, :value => current_user.id %> 
    <%= submit_tag"Post", class: "btn" %> 
<% end %> 

控制器

def new 
    @post = Post.new(params[:post]) 
end 

def create 
    @post = Post.create(post_params) 
    if @post.save 
    redirect_to @post 
    else 
    render :new 
    end 
end 

def post_params 
    params.require(:post).permit(:description, :image, :user_id) 
end 

但現在我想建立一個從,這將被放置在layouts/application.html.erb,並從各路線/站點加入。但我的問題是,變量@post缺失,因爲我解析它在郵件本身的新功能。任何想法如何解決這個問題?

回答

2

創建如下形式: -

<%= form_for Post.new, html: { multipart: true } do |form| %> 
    <%= form.text_field :description %> 
    <%= form.file_field :image %> 
    <%= form.hidden_field :user_id, :value => current_user.id %> 
    <%= submit_tag"Post", class: "btn" %> 
<% end %> 
+0

我快一點點。在我發佈這個問題10秒後,我發現了一個解決方案:'<%= form_for Post.new(params [:post]),url:{controller:「post」,action:「create」},html:{ multipart:true} do | form | %>' – Sylnois

+0

但是,謝謝你:) – Sylnois

0

您剛剛編輯視圖的第一行:

<%= form_for Post.new(params[:post]), url: { controller: "post", action: "create"}, html: { multipart: true } do |form| %> 

正如你可以看到我更換了@post變量和靜態調用並添加了控制器屬性。

0

,也可以定義你的@postapplication_controller,然後調用它在before_action