我将此表单嵌套在视图' 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:)
答案 0 :(得分:0)
将param1
和param2
添加到您允许的参数列表中。在你的控制器中,你应该有类似的东西:
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]是零。