如何使表单记住虚拟属性的输入?

时间:2014-04-05 18:18:43

标签: ruby-on-rails forms ruby-on-rails-4

在我看来,我有

<%= form_for(@post) do |f| %>
    <%= f.text_field :name %>
    <%= f.text_field :tag_list %>
    <%= f.submit %>
<% end %>

其中tag_list是虚拟属性。

class Post < ActiveRecord::Base
  def tag_list
    #Virtual attribute stuff
  end

  def tag_list=(value)
    #Virtual attribute stuff
  end
end

问题是,当用户提交表单但未通过验证时,表单不记得tag_list字段的输入。它只记住名称字段的输入。如何让表单记住tag_list的输入?

1 个答案:

答案 0 :(得分:1)

在控制器操作中获取表单参数时,将其保存在会话中。

示例:

def new
  @post = Post.new
  @tag_list = session[:tag_list]
end

session[:tag_list]= params[post][tag_list]
@post = params[post]

if @post.save 
  ...
else 
  ...
end

现在在您的表单中,使用@tag_list填充tag_list

<%=f.text_field, :tag_list, @tag_list%>