我想从表单创建一个帖子。这就是我所做的以及到目前为止所做的工作:
查看
<%= 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
缺失,因为我在帖子本身的新函数中解析它。知道如何解决这个问题吗?
答案 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