【问题标题】:Ruby on Rails passing variable from View to ControllerRuby on Rails 将变量从视图传递到控制器
【发布时间】:2017-03-27 17:38:55
【问题描述】:

我在视图上有这个:

th = link_to "ID", :search_form => @search_form

这在控制器上:

@search_form = params[:search_form]

在调试器上没有显示参数 :search_form 并且在程序上它会导致 nil 错误,而在控制器上有一个实际声明的 @search_form 变量。为什么Controller上是空的?

【问题讨论】:

  • 请显示更多代码,例如控制器方法。另外,link_to 的格式似乎不正确,它发布到哪里?

标签: ruby-on-rails ruby model-view-controller parameters null


【解决方案1】:

您需要在link_to 中指定路径

= link_to 'ID', some_path(search_form: @search_form)

您也可以像这样指定控制器和操作

= link_to 'ID', url_for(controller: :some_controller, action: :show, search_form: @search_form)

【讨论】:

  • 如何指定控制器的路径?
  • 要么按照url_for(controller: my_controller ....) Iceman 的建议,要么使用 rails 的路由自动命名。它为大多数路线生成快捷方式。例如,要访问控制器my_controllershow 操作,路由将是:show_my_controller_path
  • 您在routes.rb 文件中指定了一个路径。可以在rails guides on routing中阅读。
  • 因此,如果我首先从 @search_form 实例渲染它们,例如:#{@search_form.id},然后我只想使用 url_for 方法将它们返回到控制器.. . 为什么他们是零?这是否意味着一旦显示了视图,就会删除每个变量?
  • 它们一旦显示就不会被删除。
猜你喜欢
  • 2012-06-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-17
相关资源
最近更新 更多