2011-04-27 6 views
0

RoR을 사용하여 로그인 기능을 사용하여 블로그를 만들고 있는데 각 기사 제출을 1,000 자로 제한하고 모든 사용자의 댓글을 최대 350 자까지 제한하려고합니다. 이것을 구현하거나 시작하는 방법은 무엇입니까?문자 추가. 블로그 항목 수 및 제한

이상적인 숫자는 숯이 추가 될 때 카운트 다운되며 마이너스 숫자 (트위터 등) 일 때 색상이 변경됩니다. 사용자가 한도를 초과가는 경우

또는

기사 또는 의견은 플래시 통지를 던졌습니다.

validates_length_of : 기사 : 나는 실제로 모델에 다음과 같은 추가 숯불 수를 제한 할 수 있습니다

오전 생각 최대 => 800

validates_length_of : 코멘트 : 최대 => 400

남은 문자 수를 입력하는 방법을 보여 주지만 클라이언트 측에서는이 방법을 사용합니까? RoR이이를 할 수 있습니까?

답변

1

당신이 요구하는 검증은 매우 간단합니다.
자바 스크립트, jquery 또는 다른 js 프레임 워크를 사용하여 브라우저에서 클라이언트 측에서 구현하는 것이 좋습니다.

서버 측에서 유효성 검사를 수행하는 경우 레일스에서 ​​여전히 텍스트 필드 요소와 관련된 일부 자바 스크립트 이벤트를 바인딩해야합니다.
이렇게 높은 수준의 UI가 필요한 경우 서버 측 (레일즈)에서 이러한 유효성 검사를 수행하지 마십시오.

+0

입니다. UI 요소에 동의합니다. 이것에 보석이 있는지 아십니까? 나는 Char. 요즘 카운트 기능이 꽤 일반적입니다! – ubique

+0

@ubique : 내 대답을 잘 이해하지 못했을 것 같네요. 왜 그런 작은 일을하고 싶은지, 둘째, 보석은 Ruby에 내장되어 있기 때문에, 제안한 것처럼 클라이언트 측 브라우저가 아니라 서버 측에서 유효성 검사가 작동합니다. –

+0

내가 보석을 생각하는 이유는 양식을 지우지 않고 'submit'(너무 플래시 메시지)에 500자를 말하는 것보다 더 오래 기사를 수령하는 것을 멈추고 싶어하기 때문입니다. 또한 사용자에게 시각적 카운트 다운을 제공합니다. 미학 .... .... – ubique

1

다음은 서버 측 유효성 검사를 구현하고 유효성 검사가 실패 할 때 "플래시"오류 메시지를 표시하는 솔루션입니다. 당신의 ArticlesController에서

class Article < ActiveRecord::Base 
    ... 
    validates_length_of :note, :maximum => 1000 
    ... 
end 

: 당신의 기사를 모델에서

당신의 기사에서

def create 
    @article = Article.new 
    if @article.update_attributes(params) 
     redirect_to articles_path 
    else 
     render :action => "new" 
    end 
    end 

보기 :

<%= form_for @article do |f| %> 
    // This can be moved to a template 
    <% if @article.errors.any? %> 
    <div id="error_explanation"> 
    <h2> 
     <%= pluralize(@article.errors.count, "error") %> prohibited this record from being saved: 
    </h2> 

    <ul> 
     <% @article.errors.full_messages.each do |msg| %> 
     <li><%= msg %></li> 
     <% end %> 
    </ul> 
    </div> 
    <% end %> 

    // More form fields 
<% end %> 
+0

감사합니다. 그러나 사용자 경험에서 그것은 Char를 유지하는 데 너무 많은 번거 로움이 될 것입니다. 머리가 센다! – ubique

1

당신이 있기 때문에, 자바 스크립트에서이 작업을 수행해야합니다 그것은 당신이 찾고있는 클라이언트 측 기능입니다. 또한이 제한을 유지할 수 있도록 모델 유효성 검사가 있어야합니다 (예 : 말풍선 같은 것을 사용하여 POST를 보내면 자바 스크립트 유효성 검사를 매우 쉽게 수행 할 수 있습니다).

"자바 스크립트 문자 카운터"로 검색하면 많은 결과가 나타납니다.

0

jQuery 플러그인을 통해 멋진 '크로스 브라우저'솔루션을 발견하고 사용자가 클라이언트 측에서 할당 된 금액 이상으로 기사를 제출하지 못하게합니다. Here 필요한 Rails 플러그인은 Here