如何在控制器的动作中显示模态窗口?

所以我有控制器PagesController与动作索引和full_search。 动作索引是主页。 在主页上,我有“搜索”按钮和text_field。 如果用户在text_field中键入sometiong并单击“搜索”按钮,则他/她将转到操作full_search。 在这个动作中,我尝试通过用户的查询找到一些东西。 如果我没有找到任何东西,我应该只显示一个“没有结果”的模态窗口,否则重定向到另一个页面

def full_search ...do search... if search_result.empty? show modal window with text 'no results' else redirect to another page end end 

如何显示模态窗口(如js中的函数警报)? 我想我必须使用javascript ..但在哪里???

如果search_result是空的我不需要渲染任何视图…我只需要保持在同一页面并显示模态窗口

步骤1。

在渲染视图中,有一个id为“my_modal_content”的div,其中将插入模态的内容并显示模态。

第2步。

渲染一个js.erb文件,该文件将模态附加到我们的页面

 #your rails controller method def my_method if something == true respond_to do |format| format.js { render :partial => 'somewhere/somefile.js.erb' } #I'm assuming its js request end else redirect to another page end end 

第4步。

像这样编写你的js.erb文件,它附加模态然后显示它。

 #_somefile.js.erb file $("#my_modal_content").html("<%= escape_javascript(render 'somewhere/my_modal') %>"); $("#myModal").modal('show'); 

第3步。

模态部分文件_my_modal.html.erb放置在views/somewhere/并准备好模态内容。

  

更新

如果你想要显示警报,它非常直接。 你只是渲染js

 if search_result.empty? message = "No result found. Try something else!" respond_to do |format| format.js { render js: "alert(#{message});" } end else redirect to another page end 

您可以在控制器中保存带有true或false的变量: @var = true

然后在视图中使用javascript:

 if (<%= @var%> == true) { alert("some text"); }