Rails 5 - 在条件上呈现部分

时间:2017-10-30 20:38:20

标签: ruby-on-rails ruby

问题 - 即使条件为真,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 %>

2 个答案:

答案 0 :(得分:1)

由于您拥有的代码不包含如何将operating_system参数传递给控制器​​,因此我假设问题与您使用params密钥的方式有关。如果params是正常Hash,请尝试使用params["operating_system"]代替params[:operating_system]

{p> "operating_system":operating_system与普通Hash对象不同。

但是,如果params是Rails控制器中的默认对象,则使用字符串vs符号无关紧要,因为paramsHashWithIndifferentAccess对象。

答案 1 :(得分:1)

在与一些IRC人员协商后,显然问题是我正在从一个动作重定向到另一个动作。在重定向期间,redirect_to会触发新请求;因此失去了我所有的参数。

我知道我没有发布我的控制器方法,我认为没有必要......显然有必要回答这个问题!

我的错!