有没有办法让我只有没有观点的行动

时间:2016-02-18 12:19:57

标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-4

在我看来,像link_to这样的命名路线有一个random_path。因此,当用户点击该链接时,它将转到具有操作的特定控制器,我在其中写入数据库。它实际上不需要渲染视图。 但是视图模板似乎是强制性的Is there a way to avoid having the view.

<%= link_to bla_path do %>

<% end %>

在routes.rb

get 'bla' => 'contr#act'

在控制器中

in cont_controller.rb

def act 

Model.create(name: "bla")

# I don't need the view for this. 

end 

4 个答案:

答案 0 :(得分:4)

你也可以写下你的行动。

def act 
  Model.create(name: "bla") 
  render :nothing => true
end 

如果您需要返回相同的操作,请编写

def act 
  Model.create(name: "bla") 
  redirect_to :back
end

答案 1 :(得分:3)

是的,你可以传递渲染json:nil,status :: ok 示例代码:

<div id="element1"
  tooltip-append-to-body="true"
  tooltip-class="tooltip-400max"
  tooltip="{{ model.longTooltip }}">Text</div>
<div>More page content</div>

答案 2 :(得分:2)

http协议的工作方式是您必须响应每个请求。但是,您可以使用空白消息进行响应,在rails中最简单的方法是添加:

head :ok

你行动的任何地方。

答案 3 :(得分:1)

控制器的操作需要向浏览器发回某种http响应。如果您在不调用发送响应的方法的情况下到达操作方法(以及任何过滤器)的末尾,例如&#39;呈现&#39;或者&#39; head&#39;,默认行为是查找要呈现的视图模板,其名称与操作相同。

@kajal建议的是致电&#39;渲染&#39;生成具有最少内容的响应和200(OK)状态代码。这似乎是一种合理的方法,尽管您可以通过执行以下操作来渲染空字符串或表示操作成功的字符串:

render plain: "Ok"

你说&#34;但是视图模板似乎是强制性的,但你不能解释为什么你这么认为。你收到某种错误信息吗?如果是这样,你能说出它是什么吗?