【问题标题】:Rails Controller -- just return the processed data (dont load into a view)Rails 控制器——只返回处理后的数据(不要加载到视图中)
【发布时间】:2013-04-09 06:24:40
【问题描述】:

我是 Ruby 和 Rails 的新手。我刚刚完成了 Laravel 的课程,所以我了解 MVC 系统(就基本概念而言,我不是新手)。

我有一个很简单的问题,

我正在向我的 RAILS REST API 发送一个 POST 请求,该请求的主体包含一个像这样的 json 编码字符串--->

 Array ( [method] => POST [timeout] => 45 [redirection] => 5 [httpversion] => 1.0 [blocking] => 1 [headers] => Array ( ) [body] => {"post_content":"here is the post","post_title":"here we are ","post_author":"1"} [cookies] => Array ( ) )

如您所见,它来自我基于 php 的博客。 我的 Rails API 应该通过将单词与我在 SQLite 数据库中的一些内容进行比较来获取帖子内容并自动添加指向某些单词的链接。

好的,所以我的问题是: 我只想要来自 Rails 控制器的响应,我不想将任何东西加载到视图中。 Rails 控制器 - 返回内容,在我的数据库中找到的单词周围带有“a href”标签。这将作为对我的发布请求的响应发回,我想直接访问它作为响应的主体。 截至目前,我不知道该怎么做。 Laravel 有能力在控制器动作结束时“返回”任何你想要的东西,但在 Rails 中,一切似乎都想加载到视图中。 我在这里研究了一些问题,发现一个说'render :nothing => true'的问题,但根本没有渲染任何东西。这就是我的代码的样子。

def process
content = params['post_content']
##perform db function and get back the content with the links embedded.
##HOW TO RETURN THIS CONTENT. 
end  

我个人认为,我必须使用 render_to_string 方法,但我不知道该怎么做。

感谢任何帮助。 最好的祝福, 理查德·马德森。

【问题讨论】:

    标签: ruby-on-rails controller


    【解决方案1】:

    需要考虑的一些选项:

    仅将原始字符串呈现为 http 响应正文:

    render :text => content
    

    渲染一个没有默认环绕布局的视图:

    render :layout => false
    

    在这种情况下,您的观点可能只是:

    <%= @content %>
    

    或者将内容渲染为json:

    render :json => { :content => content }
    

    【讨论】:

      【解决方案2】:

      问题是,你想要返回什么?文本? XML? JSON?

      我假设您希望根据输入的 JSON 返回 JSON。

      respond_to do |format|
          format.json { render json: @someobject }
      end
      

      查看控制器方法的其余部分可能会有所帮助。

      【讨论】:

        【解决方案3】:

        如果我理解正确,相信您正在寻找的是

        render :text => "response"
        

        还有 - JSON、XML、nothing、js、文件等 - 更多信息在这里http://guides.rubyonrails.org/layouts_and_rendering.html

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-05-05
          • 1970-01-01
          • 2014-09-12
          • 2019-03-03
          • 2023-04-01
          • 2022-08-03
          相关资源
          最近更新 更多