form_for 과 form_tag 가 약간 호환이 안되다 싶은데, api를 보면,
form_tag의 select는
Handling sound in Flash is restricted to setting the volume and panning. We want to create sound and music applications using the Flash platform but as for now the platform restricts our possibilities in many ways.
For all the other Adobe nerds: What do you need to make audio applications that rock? Contact us! info@make-some-noise.info
For Adobe, here is the list of things we wish for our work to be outstanding:
플렉스에선, 다른 서버의 업로드와 똑같이, 파일업로드기능 구현후 UrlRequest를 통해, url을 레일스의 컨트롤러 경로에 보낸다.
그리고, 레일스에는
Class UploadController < ApplicationController
def load
if saveloadFile(params[:Filedata],params[:Filename].to_s)
render(:xml => "")
end
end
여기서 saveloadFile은 곧 만들게 될 정의함수이고, :Filedata, :Filename 해시를 통해 파일의 정보를 받아오게 된다. 그걸 saveloadFile 함수에 넘겨줘서 true를 호출한다면, 렌더링 된다.
def saveloadFile(fdata, fname)
filePath = "저장할 경로/+fname"
if File.open(filePath, "wb") { |b| b.write(fdata.read) }
return true
else
return false
end
end
경로를 지정하여, 파일이름 복수문제가 있을 경우엔 Time.now() 함수 같은걸로 해당시간을 고유키로 만들어 붙이는 방식으로 해결할 수 있다.
//참고
http://mindrulers.blogspot.com/2007/04/file-upload-in-flex-rubu-on-rails_3231.html
[참고:Rails for Java Developers]
xml 파싱 중, 푸시파싱과 풀파싱. 둘다 순서대로 한방향으로 이동하며 처리되는 로직이다.
트리파싱은 전체 문서를 불러들이고 무작위로 접근. 복잡한 문서활용때 효과증가.
푸시파싱//
require 'rexml/parsers/sax2parser'
include REXML::Parsers
targets = []
xml ='<data><type name="a">test1</type>
<type name="b">test2</type>
<type name="c">test3</type></data>'
parser = SAX2Parser.new(xml)
parser.listen(:start_element, %w{type}) do |u,l,q,atts|
targets << {:name=>atts['name']}
end
parser.parse
puts targets
=>namea
nameb
namec
##여기서 %w{}는 배열 생성자
풀파싱//
require 'rexml/parsers/pullparser'
include REXML::Parsers
targets = []
xml ='<data><type name="a">test1</type>
<type name="b">test2</type>
<type name="c">test3</type></data>'
parser = PullParser.new(xml)
parser.each do |e|
if e.start_element? and e[0] == 'type'
targets << {:name=>e[1]['name']}
end
end
puts targets
=>namea
nameb
namec
트리파싱//
require 'rexml/document'
include REXML
targets = []
xml ='<data><type name="a">test1</type>
<type name="b">test2</type>
<type name="c">test3</type></data>'
Document.new(xml).elements.each("//type") do |e|
targets << {:name=>e.attributes["name"]}
end
puts targets
=>namea
nameb
namec
빌더로 xml 생성
require 'rubygems'
require 'builder'
xml = Builder::XmlMarkup.new :type=>STDOUT, :indent=>1
xml.data do
xml.type "test1", :name=>"a"
xml.type "test2", :name=>"b"
xml.type "test3", :name=>"c"
end
puts xml.to_ary
=><data>
<type name="a">test1</type>
<type name="b">test2</type>
<type name="c">test3</type>
</data>
<to_ary/>
##레일스에 기본적으로 내장되어있는 줄 알고 있었는데, 새로 설치해야 했다. 그럴 경우 gem install builder로 설치
rails 1.x 버전은 require_gem, 2.x 버전은 그냥 require로...
[기타정보]
rexml 공식 // http://www.germane-software.com/software/rexml/
rexml api reference // http://docs.huihoo.com/rdoc/ruby/stdlib/libdoc/rexml/rdoc/index.html
builder reference // http://builder.rubyforge.org/