所以我有带有操作索引和 full_search 的 Controller PagesController。 Action 索引用于主页。在主页上,我有按钮“搜索”和 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 为空,我不需要渲染任何 View ...我只需要停留在同一页面并显示模态窗口
最佳答案
第 1 步。
在您呈现的 View 中,有一个 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/
中,模态内容已准备就绪。
<div class="modal fade" tabindex="-1" id="myModal" role="dialog">
<div class="modal-dialog">
...<!-- all your content insdie -->
</div>
</div>
Update
如果你想显示一个警报,它非常简单。你只是渲染 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
关于javascript - 如何在 Controller 的 Action 中显示模态窗口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37819575/