【问题标题】:Ruby on Rails: Pulling HTML string of specific element from within controllerRuby on Rails:从控制器中提取特定元素的 HTML 字符串
【发布时间】:2016-10-07 23:11:18
【问题描述】:

如果我有一个使用以下元素呈现的视图:

查看

<div id="content">
    <!-- More HTML -->
</div>

在我的控制器中,是否有这样一种方法可以使用其 id 检索特定元素的 HTML 字符串?例如,它可能看起来像:

def myview

    contentString = get_html_element_string("content")

    ...
end

其中contentString 将包含值&lt;div id="content"&gt; &lt;!-- More HTML --&gt; &lt;/div&gt; 作为字符串。

我知道您可以使用 render_to_string 获取整个呈现页面的 HTML,但我宁愿不解析它。

【问题讨论】:

  • 控制器实际上是动作列表。因此,您可以传递元素值的一种方法是使用带有 post 方法的表单,您提交的表单将参数传递到您的操作中。这些到达的参数您只需通过 params[:something_from_your_form] 捕获和使用。我不确定您要做什么,可能不需要传递到您的操作中并进一步传递到后端,艾米是您仍想保留在前端层中的东西,因此您可以更好地使用jQuery 左右..

标签: javascript jquery html ruby-on-rails ruby


【解决方案1】:

事实上,在控制器中访问渲染的内容是不可能的。

我建议创建一个辅助函数来创建 content div 中的内容。如果您需要,请在myview 中调用帮助程序。

以下帖子提供了一些在控制器中调用助手的选项: Rails - How to use a Helper Inside a Controller

【讨论】:

    【解决方案2】:

    我实际上最终将我需要的 HTML 放在了一个部分中,并从控制器中渲染它(稍后在我的视图中再次使用 &lt;%= render partial: "content_partial" %&gt;)。

    _content_partial.html.erb

    <div id="content">
        <!-- More HTML -->
        <%= @my_value.function %>
    </div>
    

    在我的控制器内:

    def myview
    
        contentString = render_to_string(:partial => 'content_partial', :layout => false, :locals => {:my_object => @my_value})
    
        ...
    end
    

    【讨论】:

      猜你喜欢
      • 2011-11-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-26
      • 1970-01-01
      相关资源
      最近更新 更多