我试图得到一些简单的切换来呈现小的部分,而不是改变整个视图-我不清楚这是否被认为是AJAX或不…不管怎样。
这里我们有用户回答一个问题。当这样做时,问题本身可以被标记为不合适。
视图:answers#new.html.erb
局部视图:_flag.html.erb
切换控制器:opinions/flag
,它应该更新opinion
并渲染flag
部分在当前answers#new
内部。
# flag.html.erb
<% if @opinion.try(:flag) == true %>
<b>Flagged.</b>
<%= link_to "undo", opinions_flag_url(:id => @question.id, :flag => false), :remote => true %>
<% else %>
<%= link_to "flag this", opinions_flag_url(:id => @question.id, :flag => true), :remote => true %>
<% end %>
# last part of opinions controller / flag
if @opinion.save
format.html { render :partial => "answers/flag" }
format.xml { head :ok }
else
format.html { render :action => "new", :id=>params[:id] }
format.xml { render :xml => @opinion.errors, :status => :unprocessable_entity }
end
部分被呈现,但不在当前视图中(它显示在空白页上)。一般来说,我如何在没有Rails的情况下渲染当前视图的点点滴滴,假设它需要自己向我展示部分?
推论:如果我想渲染文本到一个视图,我如何指定新的文本将去哪里?
你应该使用rjs。如果你不确定你是否在使用它,你可能没有:)
简而言之,您应该使用form_remote_for而不是form_for,并且您应该在控制器中使用它。
respond_to do |format|
...
format.js { Do stuff here }
end
下面是一个截屏:http://railscasts.com/episodes/43-ajax-with-rjs
将一些html放到特定位置的特定命令是:
page.replace_html "SOME_HTML_ID", "<p>SOME_HTML</p>"
但是一旦你看了视频,这应该是显而易见的:)