ruby on rails -尝试渲染:局部视图而不是整个视图



我试图得到一些简单的切换来呈现小的部分,而不是改变整个视图-我不清楚这是否被认为是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>"

但是一旦你看了视频,这应该是显而易见的:)

相关内容

  • 没有找到相关文章

最新更新