在视图和控制器之间传递参数ruby 1.8.7

时间:2015-04-27 18:06:00

标签: ruby-on-rails-3 controller params

我将此表单嵌套在视图' A'

<div>
<%if current_user%> 
    <%=form_for(ModelB.new) do |f|%>
      <%if (params[:param_to_check].present?)%>
        <%f.hidden_field "param1",:value=> @modelA.id%>
        <%f.hidden_field "param2",:value=> current_user.id%>
      <%end%>
    render button
    <%end%>
<%else%>
    render other butotn
<%end%>

</div>

这个&#39;发现&#39;在Bs_controller中:

@modelA=ModelA.find_by_id(params[:param1])
  :option_from_specific_gem=> -(@modelA.wanted_value).abs

当我看到传递给Bs_controller的params时,我看到了:

Parameters: {"authenticity_token"=>"some_hash=", "utf8"=>"✓", "y"=>"42", "x"=>"144"}

我需要将hidden_​​field的valies传递给Bs_controller。

thx for thetention:)

这里是要点:https://gist.github.com/rmatuoka/dd6904809cf89cf916f7

2 个答案:

答案 0 :(得分:0)

param1param2添加到您允许的参数列表中。在你的控制器中,你应该有类似的东西:

def modela_params
  params.require(:modela).permit(:x, :y, :param1, :param2)
end

答案 1 :(得分:0)

我做了一些评论,我会继续把它们变成答案。

有三种可能的东西。假设它不是拼写错误,您当前没有将隐藏字段输出到HTML。您需要我们<%= %>输出结果。

<%= f.hidden_field "param1",:value=> @modelA.id %>
<%= f.hidden_field "param2",:value=> current_user.id %>

这可能是个问题。否则我猜测current_user或params [:param_to_check]是零。