Coderay

Jak w temacie szukam czegoś i szukamal ale nic specjalnie znalezc nie moge. moze ma ktos doswiadczenie z nim? jak go zintegrowac z formularzem na stronie by przez znaczniki [ code ][ /code ]
wprowadzac kod?

Jak na razie mam tak:

w kontrolerze:

[code] def create
#@post = Post.new(params[:post])
@post = format_post_content(Post.new(params[:post]))

respond_to do |format|
  if @post.save
    flash[:notice] = 'Post was successfully created.'
    format.html { redirect_to(@post) }
    format.xml  { render :xml => @post, :status => :created, :location => @post }
  else
    format.html { render :action => "new" }
    format.xml  { render :xml => @post.errors, :status => :unprocessable_entity }
  end
end

end[/code]
a w application.rb

def format_post_content(post) html = post.content.blank? ? "" : post.content.clone while match = html.match(/\[ code=(.+?)\](.+?)\[ \/code\]/m) m2 = Regexp.escape(match[2]) html.gsub!(/\[ code=#{match[1].strip}\]#{m2}\[ \/code\]/m, CodeRay.scan(match[2].chomp, match[1].to_sym).html.numerize) end post.content_html = html return post end
niby powinno działac ale dostaje w kółko błąd

undefined method `content’ for #Post:0xb6fda794

Wklej źródła metody Post#content_html. Backtrace byłby także pomocny.

no właśnie nic więcej nie mam :confused: domyślam się że brakuje metody content ale ylko tyle, urwany kod w sieci znalazlem, jak szukałem info o coderay

ale jak znacie jakiś inny sposób to może być. Chce tylko by to działało nie ważne jak w sumie.

Przypatrzyłem się bardziej Twojemu kodowi:

html = post.content.blank? ? "" : post.content.clone

Tutaj masz wywołanie metody #content na obiekcie post (domyślam się że to jest instancja klasy Post).

A to, że nie dostajesz backtrace to nie wierzę :).

te 2 kawałki kodu mam z sieci, ale są niekompletne, stad moje pytanie czy ktoś z was uzywa kolorowania kodu, jak tak to jak to robicie?

No spoko, ale chyba nie masz nadziei, że przeklejony kod z sieci automagicznie zacznie działać u Ciebie?
Jeśli chodzi o kolorowanie to używam tylko na blogu, ale robię to w js.

no nadziei nie mam ;]

no nic jak nie ma jakiś gotowych łatwych do wdrożenia rozwiązań to zaczymś innym będę musiał sie rozejrzec ;]

poprawiłem trochę :slight_smile:

kontroler:

[code=ruby]def create

@post = Post.new(format_post_content(params[:post]))
respond_to do |format|
  if @post.save
	flash[:notice] = 'Post was successfully created.'
	format.html { redirect_to(@post) }
	format.xml  { render :xml => @post, :status => :created, :location => @post }
  else
	format.html { render :action => "new" }
	format.xml  { render :xml => @post.errors, :status => :unprocessable_entity }
  end
end

end[/code]
application.rb:

def format_post_content(post) post[:content_html]=post[:content].dup.gsub!(/\[_code([?<=\=](.+)|)[^\]]*\](.*?)\[\/code\]/m){|m| CodeRay.scan($3,($2||"ruby").to_sym).html.numerize } post end
może to pomoże

w wyrażeniu regularnym wywal _ z _code bo coś mi bbcode na forum zaszwankował

No troche było z tym roboty ale poszlo, do tego jak by ktos sie z tym kiedys męczył to tzreba sobie jeszcze załatwić css jak sie to robi w ten sposób np przez wygenerowanie ich bezposrednio z gemu coderey w katalogu lib, jak dobrze pamietam przez coderay_stylesheets