2010-11-08 18 views
5

我正在使用我的第一個Rails應用程序(使用Rails 3)取得良好進展。 MVC交互一切都很順利,但是我不能直接與模型相關的表單。Rails:恢復使用form_tag的非模型表單的內容

我使用form_tag,並在成功的情況下,一切都表現良好。但是,處理錯誤有點不友好。實際的錯誤信息存儲在閃存中,並通過layouts/application.html顯示得很好,但如果表單可以記住用戶剛剛填入的內容,我真的很喜歡它。但它不包含:所有字段重置爲其默認值。

我喜歡REST風格的對象形式,它自動記住它們提交的值,並在出現錯誤時以紅色突出顯示。我很好,沒有紅色突出顯示,但我真的很喜歡它,如果我可以使表單的字段保持提交的值。

任何人都可以建議如何做到這一點?從相關文件

摘錄:

視圖/ cardsets/import.html.erb:

<%= form_tag :action => :import_data, :id => @cardset do %> 
    ... 
    <%= text_field_tag "separator", "", :maxlength => 1 %> 
    ... 
    <%= text_field_tag "formatting_line" %> 
    ...etc (more fields) 

控制器/ cardsets_controller.rb:

# POST /cardsets/1/import_data 
def import_data 
    success, message = @cardset.import_data(params, current_user) 
    if success 
    redirect_to(@cardset, :notice => message) 
    else 
    flash.now[:error] = message 
    render :import 
    end 
end 

回答

9

第二ARG到text_field_tag是用來填寫字段的值。嘗試是這樣的:

<%= text_field_tag "separator", params[:separator], :maxlength => 1 %> 
+0

工作很好!謝謝! – AlexC 2010-11-14 22:13:50

1

如果你的領域有一個默認的,你會想從窗體的「秀」動作設置:

# GET 
def show_form 
    params[:key] = 'default' 
end 

# POST 
def validate_form_and_act 
    # Don't set it here to reuse what the user passed. 
end 

,或者直接在模板上(不太好的因爲每次使用||並添加更多控制器數據查看):

<%= text_field_tag 'name', params[:key] || 'default' %>