从视图调用控制器操作而不更改页面

Posted

技术标签:

【中文标题】从视图调用控制器操作而不更改页面【英文标题】:Calling a Controller Action from View without changing page 【发布时间】:2013-06-26 18:03:49 【问题描述】:

我想从我的视图中调用控制器操作。 我的操作称为导出,本质上我只想将一些数据导出到我已经为其编写方法的 csv 文件。但是,当我单击此链接时,我不希望我页面上当前的任何内容发生变化。这样做的最佳方法是什么?

【问题讨论】:

【参考方案1】:

使用csv_builder 生成 csv。向控制器操作发出 get 请求,并让操作响应 csv 格式

例如。

  def action1
     respond_to do |format|
        format.csv do
          @filename = "filename.csv"
          @output_encoding = 'UTF-8'
          @csv_options = :col_sep => ','
        end
      end
  end

您需要有一个名为 action1.csv.csvbuilder 的视图文件

【讨论】:

我已经编写了一个方法,可以以我想要的格式解析我的数据。我有一个哈希数组,所以我希望能够调用我的方法 那你就可以format.csv render :text => <your data>

以上是关于从视图调用控制器操作而不更改页面的主要内容,如果未能解决你的问题,请参考以下文章

通量控制器视图未订阅商店中的事件更改

iiview 甲板控制器在呈现模态视图时更改框架而不更改界面方向

如何在 Laravel 中将变量从视图传递到控制器而不使用 URL 或表单

将值从控制器发送到“标题”视图,但当页面更改时,变量未定义

从 MVC 控制器操作调用 javascript

在 iOS 7 中更新导航栏而不更改视图