我试图通过一些简单的切换来渲染小部分而不是改变整个视图 - 我不清楚这是否被认为是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假设它需要自己显示部分,我如何在当前视图中渲染位和片段?
推论:如果我想将文本渲染到视图中,如何指定新文本的去向?
答案 0 :(得分:1)
你应该使用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>"
但是一旦你看过截屏视频,这应该是显而易见的:)