Html 疯狂艰难的CSS困境
我一直在努力使添加到我的应用程序布局中的此flash消息中的样式按预期工作:Html 疯狂艰难的CSS困境,html,ruby-on-rails,css,ruby,ajax,Html,Ruby On Rails,Css,Ruby,Ajax,我一直在努力使添加到我的应用程序布局中的此flash消息中的样式按预期工作: <div id= "notice"><% flash.each do |key, value| %> <%= value %> <% end %></div> 现在的问题是flash消息是用ajax呈现的,因此样式应该只在flash消息出现时出现。然而,情况并非如此。即使没有flash消息,也会出现一个绿色div,这看起来相当尴尬 现在我试过这样的方法
<div id= "notice"><% flash.each do |key, value| %>
<%= value %>
<% end %></div>
现在的问题是flash消息是用ajax呈现的,因此样式应该只在flash消息出现时出现。然而,情况并非如此。即使没有flash消息,也会出现一个绿色div,这看起来相当尴尬
现在我试过这样的方法:
<div id= "notice"><% flash.each do |key, value| %>
<div class="<%= key %>"><%= value %></div>
<% end %></div>
其中,我使用“
类进行样式设置。我将
放在ajax渲染的外部,因为它似乎没有拾取ruby块中的div。但是,CSS样式不会使用“
类呈现。所以我似乎被两个糟糕的选择所困扰:
有什么办法可以让我两全其美吗?是的。当ajax请求传入时,您可以使用javascript应用这些样式,或者将请求的内容包装在一个容器中,该容器具有其特有的样式,而该样式在原始页面上不存在
基本上,隐藏“绿框”直到它被填充,或者用ajax发送“绿框”。是。当ajax请求传入时,您可以使用javascript应用这些样式,或者将请求的内容包装在一个容器中,该容器具有其特有的样式,而该样式在原始页面上不存在
基本上,隐藏“绿框”直到它被填充,或者将“绿框”与ajax一起发送。您能分享生成这个的ajax吗 在您的情况下,我会尝试使用jQuery的方法在触发flash消息时将flash DIV添加到页面顶部,然后在某个计时器后将其删除 --编辑-- 这里有一个“例如”的例子: 假设您的ajax调用正在点击FoosController更新,并且是从ShowAction发送的 在show view中,我会有如下内容:
<div class="notices"></div>
在jQuery+ERB中,我将在views/foos/
$('div.notices').append('<%= render 'shared/flash' %>');
这将使任何div.flash在5秒后淡出并消失。或者,您可以使用jQuery click()方法使其在单击后消失
我希望这有帮助
--重新编辑--
根据,要使用RJS执行此操作:
在您的视图中,创建:
<div id="notices"></div>
将您的flash消息放在一个部分中仍然是一个好主意。请确保按照第一次编辑中所述,将flash消息放入
div.flash
,然后您就可以开始了。您可以共享生成此消息的AJAX吗
在您的情况下,我会尝试使用jQuery的方法在触发flash消息时将flash DIV添加到页面顶部,然后在某个计时器后将其删除
--编辑--
这里有一个“例如”的例子:
假设您的ajax调用正在点击FoosController更新,并且是从ShowAction发送的
在show view中,我会有如下内容:
<div class="notices"></div>
在jQuery+ERB中,我将在views/foos/
$('div.notices').append('<%= render 'shared/flash' %>');
这将使任何div.flash在5秒后淡出并消失。或者,您可以使用jQuery click()方法使其在单击后消失
我希望这有帮助
--重新编辑--
根据,要使用RJS执行此操作:
在您的视图中,创建:
<div id="notices"></div>
将您的flash消息放在一个部分中仍然是一个好主意。确保按照第一次编辑中所述,将flash消息放入
div.flash
,您就可以开始了。我将设置显示:无
用于#注意
框,并将其保存在jQuery代码中
$('#notice').css('display','block')
您可以在填写代码之后和执行fadeIn之前立即执行此操作,确保使用回调,这样不会到处跳转。我会设置
显示:无
用于#注意
框,并将其保存在jQuery代码中
$('#notice').css('display','block')
您可以在填写代码后立即使用该文件,在执行fadeIn之前,确保使用回调,这样事情就不会到处乱跳。这是一个.rjs文件:
page.replace\u html:notice,flash[:success]
您能提供一个示例来说明您的确切意思吗?啊。。。不幸的是,我对RJS一无所知。是否有一种RJS方法可以将内容插入到特定的DOM元素中,而不是替换它?如果是这样的话,你可以插入你想要的div并在一段时间后删除它,这将解决你的问题。啊,谢谢你的编辑很有帮助。所以我将CSS样式应用到flash类中,对吗?好吧,也许打开一个新问题会很好。另外,这是一种阅读rails入门书可能会有很大帮助的东西--可能有一些基本的东西你不熟悉,但你不知道你没有意识到,所以我猜不出那是什么,你也不知道那是什么,所以没有办法告诉你:)为flash消息问题打开一个新问题,这样人们就可以在答案中发布代码而不是评论。它是一个.rjs文件:page.replace\u html:notice,flash[:success]
你能提供一个你确切意思的例子吗?啊。。。不幸的是,我对RJS一无所知。是否有一种RJS方法可以将内容插入到特定的DOM元素中,而不是替换它?如果是这样的话,你可以插入你想要的div并在一段时间后删除它,这将解决你的问题。啊,谢谢你的编辑很有帮助。所以我将CSS样式应用到flash类中,对吗?好吧,也许打开一个新问题会很好。而且,这是一种
page.insert_html :bottom, :partial=>'shared/flash'