微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

所以我有控制器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

第四步.

像这样写你的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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐