ruby-on-rails - Rails - 如何从帮助程序的 View 中访问请求参数

标签 ruby-on-rails

如何在 Helper 中访问 View 的请求参数?

我的 View events/index7设置了参数date_selected:

<div><%= link_to 'View' , events_index7_path(:date_selected => date), :class => 'btn  btn-mini'%></div>

我的助手是 app/helpers/calendar_helper.rb

这是在 Helper I 中我想要访问它的位置的图片。

enter image description here

我试过这个:

classes << "dayselect" if day == DateTime.strptime(params[:date_selected], "%Y-%m-%d")

我收到这个错误:

undefined local variable or method `params' for #<CalendarHelper::Calendar:0x007f8d215671f0>

或者我应该以不同的方式将日期传递给助手吗?

感谢您的帮助!

最佳答案

params 是一个 Controller 方法,属于ActionController:Metal http://api.rubyonrails.org/classes/ActionController/Metal.html#method-i-params

通过将此 Controller 方法公开为助手,可以让 View 接触 params

class FooController < ApplicationController
  helper_method :params

然后,在您的 View 中,您可以使用 params 作为参数调用此助手。 我的助手(参数)

但是,等等,这违反了 MVC 原则。 View 根本不应该接触参数。所有这些工作都应该在 Controller 级别完成。如果参数不正确怎么办?您需要 Controller 来响应,而不是将责任传递给 View 。

因此,如果您需要在视野中触摸它,那是一种气味。回顾整个过程,一定有更好的安排。

关于ruby-on-rails - Rails - 如何从帮助程序的 View 中访问请求参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20163922/

相关文章:

ruby-on-rails - Rails 5 - 集成测试 NoMethodError: #<Rack::Test::CookieJar:0x00000006796390> 的未定义方法 `signed'

ruby-on-rails - AngularJS 返回值如何转换为整数?

ruby-on-rails - 使用 Active Record exists 有什么区别?与 find_by 相比?

javascript - 从 iframe 触发事件

ruby-on-rails - 为什么身份验证是 : 'plain' the default setting for actionmailer in rails (with gmail smtp)?

ruby-on-rails - 对于 Ruby on Rails,当从 API 获取数据时如何使用 will_paginate 或 Kaminari? (通过网络)

ruby-on-rails - Heroku 推送因 SQLite 失败,但我以为我删除了它

ruby-on-rails - 如何在 ruby​​ 中禁用自动日志记录

ruby-on-rails - 如何正确链接到静态页面?

ruby-on-rails - 如何设置两个域以使用 Passenger 指向同一个应用程序但具有不同的 Rails 功能?