2012-11-20 146 views
0

我正在使用Bootstrap-Sass和Formstatic。我想應該會像在這幅圖中一樣,在Formstatic字段旁邊自動顯示錯誤消息:here http://asciicasts.com/system/photos/227/original/E185I06.pngRails:顯示錯誤消息[bootstrap-sass,formtastic]

但即使用戶輸入了無效輸入,我的應用程序也不會顯示錯誤消息。這似乎是一個簡單的問題,但我無法弄清楚背後的原因。

PostController中

# POST /posts 
# POST /posts.json 
    def create 
@post = Post.new(params[:post]) 
@post.view = 0 
@post.like = 0 
@post.hate = 0 

respond_to do |format| 
    if @post.save 
    @posts = Post.paginate(:page => params[:page], order: 'like desc', per_page: 10) 
    format.html { redirect_to posts_path } 
    format.json { render json: @post, status: :created, location: @post } 
    else 
    format.html { render action: "new" } 
    format.json { render json: @post.errors, status: :unprocessable_entity } 
    end 
end 

PostModel

validates :name, :presence => true 
    validates :content, :presence => true, 
         :length => { :minimum => 10, :maximum => 300} 

_form(POST)

<% @post = Post.new %> 
<%= semantic_form_for @post do |f| %> 
<%= f.semantic_errors :name %> 
<%= f.inputs do %> 
    <%= f.input :name, :label => 'name' %> 
    <%= f.input :content, :label => 'body' %> 
<% end %> 
<%= f.actions do %> 
    <%= f.action :submit, :button_html => { :class => "btn btn-primary" }, :as => :button %> 
    <%= f.action :cancel, :as => :link %> 
<% end %> 

UPDATE:在PostController中,我刪除了以下兩行

#format.html { render action: "new" } 
    #format.json { render json: @post.errors, status: :unprocessable_entity } 

,並添加

render @post.errors 

然後,我得到了

@messages={:name=>["can't be blank"], :content=>["can't be blank", "is too short (minimum is 10 characters)"]}> 

所以PR問題在於我渲染json的方式是錯誤的。有人可以幫我解決這個問題嗎?

回答

0

您在namecontent和長度驗證通過驗證存在內容,這意味着如果你不namecontent然後它會給錯誤,如can't be blank輸入任何值,如果content值長度小於10和更大那麼300會發生錯誤。

如果您想通過無效輸入驗證,那麼您必須通過validates_format_of驗證。

您將無效的輸入放在名稱或內容中? 你能提供你輸入的無效輸入嗎?

更新

# in /config/initializers/formtastic_config.rb. 

Formtastic::SemanticFormBuilder.inline_errors = :sentence 

見視頻http://railscasts.com/episodes/185-formtastic-part-2

獲取代碼https://github.com/ryanb/railscasts-episodes/tree/master/episode-185

+0

1)我離開所有字段爲空,然後按 「創建」 2)I爲內容字段寫入少於10個字符,然後按「創建」 這兩個必須阻止我從保存帖子,他們做。但他們不會拋出錯誤信息。換句話說,驗證工作正常,但顯示錯誤消息不起作用。我如何使它工作? –

+0

@MaximusS我更新我的代碼,你可以試試這個請 –

+0

它似乎沒有工作。 –