Rails - 在表单提交上,将params传递给特定于类的控制器(即classname_params)

时间:2014-03-27 05:28:06

标签: ruby-on-rails forms ruby-on-rails-4

我正在尝试向下面的视图添加一个输入(复选框),在提交时,它会将它的值传递给控制器​​中的league_params,而不仅仅是params。现在,仅:在提交时将名称添加到league_params。

如果重要的话,在最初创建联盟之后通过迁移添加了is_disabled列(布尔值)。

视图

<%= form_for @league, :html => { :class => 'form-horizontal' } do |f| %>

  <div class="control-group">
    <label class='control-label' for="league_name">Name</label>
    <div class="controls">
      <%= f.text_field :name, :class => 'text_field' %>      
    </div>
  </div>

  <div class="control-group">
    <%= f.label :is_disabled, "Is Disabled", :class => 'control-label' %>
    <div class="controls">
      <%= f.check_box :is_disabled %>
    </div>
  </div>

  <div class="form-actions">
    <%= f.submit nil, :class => 'btn btn-primary' %>
    <%= link_to t('.cancel', :default => t("helpers.links.cancel")),
                leagues_path, :class => 'btn' %>
  </div>
<% end %>

在控制器中:

  def update
    respond_to do |format|
      if @league.update(league_params)
        format.html { redirect_to @league, notice: 'League was successfully updated.' }
        format.json { head :no_content }
      else
        format.html { render action: 'edit' }
        format.json { render json: @league.errors, status: :unprocessable_entity }
      end
    end
  end

2 个答案:

答案 0 :(得分:1)

如果您使用的是强参数,则必须允许&#39;从视图传递的字段。在这种情况下,根据您的问题,&#39;名称&#39;允许但字段“is_disabled&#39; ISN&#39;吨

例如

params.require(:user).permit(:first_name, :last_name)

答案 1 :(得分:1)

请在您未在此处发布的控制器末尾的方法中添加类似的内容:

def league_params
  params.require(:league).permit(:is_disabled, .. etc)
end

确保您在此处添加了is_disabled