Rails控制器 - 只返回已处理的数据(不加载到视图中)

时间:2013-04-16 18:03:04

标签: ruby-on-rails controller

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

我有一个相当简单的问题,

我正在向我的RAILS REST API发送POST请求,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能够在Controller Action结束时“返回”任何你想要的东西,但是在Rails中,一切似乎都想加载到视图中。 我在这里研究了一些问题并找到一个说'render:nothing =>是',但这根本不会呈现任何内容。这就是我的代码的样子。

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方法,但我不知道如何做到这一点。

感谢任何帮助。 最好的祝福, 理查德麦德森。<​​/ p>

3 个答案:

答案 0 :(得分:2)

要考虑的一些选项:

将原始字符串渲染为http响应正文:

render :text => content

渲染没有默认周围布局的视图:

render :layout => false

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

<%= @content %>

或将内容呈现为json:

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

答案 1 :(得分:1)

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

我将假设您希望基于JSON进入JSON。

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

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

答案 2 :(得分:0)

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

render :text => "response"

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