如何在ROR中将参数传递给控制器

时间:2015-02-28 16:36:04

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

我想将年份和月份传递给控制器​​。按下提交按钮时,应将年份和月份信息传递给控制器​​show的操作foo

我已将我的表单编辑为

<%= form_tag "/test" do %>
<%= month_field_tag :yearMonth %>
<%= submit_tag %>
<% end %>

如何在视图中归档此内容以及如何在foo控制器中获取传递的参数?

2 个答案:

答案 0 :(得分:4)

Rails 4+你必须在你的控制器中有一个params.require私有def,以允许解析你定义为“okay”的变量。您的控制器将通过.require过滤掉未明确允许的任何内容。

private
def name_of_controller_params
  params.require(:name_of_controller).permit(:yearMonth, :anothervar, :etc)                   
end

要在操作点查看控制器中的params哈希值,可以将此调试代码插入到相关操作中。您可以使用它来查看您的参数是否从表单进入控制器的操作。

    def show
      flash[:info] = "Params hash #{params}."
      other actions...
    end

答案 1 :(得分:0)

这样的事情会起作用:

<%= form_tag '/test' do %>
  <%= month_field_tag 'month_value', '' %>
  <%= submit_tag %>
<% end %>

然后检查来自show操作的参数,看看month_value是否存在。