1

我是 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 有能力在控制器动作结束时“返回”任何你想要的东西,但在 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 方法,但我不知道该怎么做。

任何帮助表示赞赏。最好的问候,理查德·麦德森。

4

3 回答 3

2

需要考虑的一些选项:

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

render :text => content

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

render :layout => false

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

<%= @content %>

或者将内容渲染为 json:

render :json => { :content => content }
于 2013-04-16T18:13:47.850 回答
1

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

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

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

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

于 2013-04-16T18:11:49.190 回答
0

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

render :text => "response"

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

于 2013-04-16T18:07:56.353 回答