在每个网站上发布新表单

时间:2016-12-27 13:34:12

标签: ruby-on-rails

我想从表单创建一个帖子。这就是我所做的以及到目前为止所做的工作:

查看

<%= 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

但是现在我想创建一个from,它将被放置在layouts/application.html.erb并且可以从每个路径/站点加入。但我的问题是,变量@post缺失,因为我在帖子本身的新函数中解析它。知道如何解决这个问题吗?

3 个答案:

答案 0 :(得分:2)

创建如下表单: -

public ActionResult Edit(UserRolesmanagement role, string CurrentRolesValues)
{
   List<string> roles = CurrentRolesValues.Split(',').ToList(); 
   //logic
}

答案 1 :(得分:0)

您只需编辑视图的第一行:

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

正如您所看到的,我使用静态调用替换了@post变量并添加了控制器属性。

答案 2 :(得分:0)

或者您可以在@post中定义application_controller,然后在before_action

中调用它