问题 - 即使条件为真,Rails也不会渲染我的部分
检查params会返回以下内容:
Parameters: {"operating_system"=>"Red Hat Linux 7"}
方法1 - 无效
# app/views/forms/_show.html.erb
<%= form_with model: @form, local: true, id: 'new_form' do |f| %>
<% if params[:operating_system] == 'Red Hat Linux 7' %>
<%= render 'section_two', f: f %>
<% end %>
<% end %>
方法2 - 无效
# app/views/forms/_show.html.erb
<%= form_with model: @form, local: true, id: 'new_form' do |f| %>
<%= render 'section_two', f: f if params[:operating_system] == 'Red Hat Linux 7' %>
<% end %>
答案 0 :(得分:1)
由于您拥有的代码不包含如何将operating_system参数传递给控制器,因此我假设问题与您使用params
密钥的方式有关。如果params
是正常Hash
,请尝试使用params["operating_system"]
代替params[:operating_system]
。
"operating_system"
和:operating_system
与普通Hash
对象不同。
但是,如果params
是Rails控制器中的默认对象,则使用字符串vs符号无关紧要,因为params
是HashWithIndifferentAccess
对象。
答案 1 :(得分:1)
在与一些IRC人员协商后,显然问题是我正在从一个动作重定向到另一个动作。在重定向期间,redirect_to
会触发新请求;因此失去了我所有的参数。
我知道我没有发布我的控制器方法,我认为没有必要......显然有必要回答这个问题!
我的错!