开发者

Keep form fields filled after an error (RoR)

After validation, I got an error and I got returned back to :action => :new. Some field on form already filled, so I want to keep the开发者_如何学Cm filled even after error message too. How it can be done?


Your View (new.html.erb) something like following

<%= error_message_for :user %>
<% form_for :user, :action=>"create" do|f|%>

<%= f.text_field :login %>

<% end %>

Controller Code (create method)

def create
  @user=User.new(params[:user])
  if @user.save
     redirect_to :action=>'index'
  else
     render :action=>'new'  #you should render to fill fields after error message
  end
end


Since in my case the form was in the view of another controller I did use flash to store my data and then check if there is data in flash present. If yes take this for default values for your input fields, if not just show whatever you want to show then.

So snippets from my code

flash[:date] = start_date

# in the view where to form resides
start_day = flash[:date].nil? nil : flash[:date].day
# ...
<%= select day start_day ... %>

Hope that helps some of you ;-).

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜