私は Last.fm API を使用しており、特定のユーザーに関する多くの情報を取得して xml で返そうとしています。だから、ここに私の見解での呼び出しがあります:
<%= form_tag fetch_user_path, :remote => true, :'data-type' => 'xml', :id => 'search' do %>
<%= text_field_tag :q %>
<% end %>
ご覧のとおり、XML を想定しており、jQuery を使用してコールバックを正しく処理しています。次に、私のコントローラーで:
# fetch_controller.rb
def user
username = params[:q].gsub(' ','+')
get_info_url = "http://ws.audioscrobbler.com/2.0/?method=user.getinfo&user=#{username}&api_key=#{API_KEY}"
get_friends_url = "http://ws.audioscrobbler.com/2.0/?method=user.getfriends&user=#{username}&api_key=#{API_KEY}"
respond_to do |format|
format.xml {
begin
@info = Nokogiri::XML(open(get_info_url))
@friends = Nokogiri::XML(open(get_friends_url))
rescue Exception => e
if e.message == '400 Bad Request'
render xml: { :error => 'User not found.' }, :status => 400
else
render xml: { :error => 'Connection to Last.fm failed.' }, :status => 500
end
else
# Here, I want to render @info + @friends!
render xml: @info
end
}
end
このようにして、によって返された xml を正しく返していget_info_url
ます。ただし、その xml を によって返される xml に結合したいと考えていget_friends_url
ます。どうすればそれについて行くでしょうか?
Ben Miller の回答に続いて、コールバックで解析エラーが発生しています。を含む両方のxmlファイルに関係していると思いますxml version
。そして、おそらく結合されたファイルはそうではありませんか?xml ファイルが連結されているのがわかりますconsole.log
。
Error: Invalid XML: <?xml version="1.0"?>
<Combined>
<UserInfo>
<?xml version="1.0" encoding="utf-8"??>
<lfm status="ok">
<user>
# lots of info about the user
</user>
</lfm>
</UserInfo>
<FriendInfo>
<?xml version="1.0" encoding="utf-8"??>
<lfm status="ok">
<friends for="user" page="1" perpage="50" totalpages="2" total="96">
# lots of info about the user's friends
</friends>
</lfm>
</FriendInfo>
</Combined>