2016-12-27 45 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