После прочтения нескольких статей об Ajax в ROR, я все еще смущен тем, как использовать Ajax!Как использовать Ajax в рубине на рельсах?
В моем проекте есть main/index.html
и main_controller
. Я хочу выполнить функцию, описанную ниже:
После нажатия ссылки в index.html
содержимое RSS будет отображаться в индексе. Я выполняю функцию, перепрыгивая на другую веб-страницу. Но я не знаю, как использовать Ajax ...
индекс
<h1>Listing Jobs</h1>
<table>
<tr>
<th>Source</th>
<th></th>
</tr>
<% @jobs.each do |job| %>
<tr>
<td><%= job.source %></td>
<td>
<%= link_to 'Show', #:controller=>'main', :action=>'show',
:id=>job.id,:remote=>true, "data-type"=>:json, :class=>'updateJob'%>
</td>
</tr>
<% end %>
</table>
<script type="text/javascript" charset="utf-8">
$(function(){
# $('#'+job.id).bind("click",function(){
# $('#showJob').append('Hi')
# })
$('#'+job.id).bind("ajax:success",function(data, status, xhr){
("<h1>hello</h1>").appendTo("#showJob")
})
})
</script>
show.html
<div id="showJob">
</div>
<table>
<tr>
<th>Source</th>
<th>Link</th>
</tr>
<% @feed.items.each do |item| %>
<tr>
<th><%= item.title %></th>
<th><%= item.link %></th>
</tr>
<% end %>
</table>
main_controller
require 'rss'
require 'rss/1.0'
require 'rss/2.0'
require 'open-uri'
class MainController < ApplicationController
#get /jobs
def index
@jobs=Job.all
respond_to do |format|
format.html # index.html.erb
format.json {render:json=>@jobs}
end
end
def welcome
@num_sources =Job.count
end
def show
job=Job.find(params[:id])
url=job.url
open(url) do |rss|
@feed = RSS::Parser.parse(rss)
end
respond_to do |format|
# format.html do
# render :partial=>'main/show'
# end
format.json {render :json=>@feed}
end
end
end
Я до сих пор не знаю, как иметь дело с контроллером. В методе «show» контроллера «format.html» приведет меня к show.html, а не покажет содержимое частично ... – user2128003
@ user2128003 - обновлено, это работает для вас? – PinnyM