rails不会保存表单字段

时间:2014-03-06 22:29:49

标签: ruby-on-rails save

我的形式有这样的形式字段:

<div class="tags">
  <%= f.label :tags %>
  <%= f.text_area :tags %>
</div>

我像这样进行了迁移:

class AddTagsToIssues < ActiveRecord::Migration
  def change
    add_column :issues, :tags, :text
  end
end

当我保存时,新行被添加到db,但tags = nil,尽管我在de text_area中键入了类似'test'的内容

在我的开发日志中我有:

未经许可的参数:标签

我在我的控制器中试过白名单:

 def create
    @issue = Issue.new(issue_params)
    Issue.new(params.permit(:tags))

但这不起作用。

后续问题更新:

完全创建方法:

def create
    def issue_params    
    params.require(:issue).permit(:tags) 
    end
    @issue = Issue.new(issue_params)
    Issue.new(params.permit(:tags))
    respond_to do |format|
      if @issue.save
        format.html { redirect_to @issue, notice: 'Issue was successfully created.' }
        format.json { render action: 'show', status: :created, location: @issue }
      else
        format.html { render action: 'new' }
        format.json { render json: @issue.errors, status: :unprocessable_entity }
      end
    end
  end

模特:

class Issue < ActiveRecord::Base

    belongs_to :project

end

表创建查询:

class CreateIssues < ActiveRecord::Migration
  def change
    create_table :issues do |t|
      t.string :title
      t.text :description
      t.integer :no_followers

      t.timestamps
    end
  end
end

因此,我没有权限问题,只会在以后添加标签时发生,然后才会使用标签。

1 个答案:

答案 0 :(得分:4)

tags被设置为nil,因为您尚未允许。

tags方法中允许issue_params,如下所示:

 def issue_params    
    params.require(:issue).permit(:tags,...) 
 end

其中,...指的是模型Issue中的其他字段。

您的create操作应该是这样的,

 def create
    @issue = Issue.new(issue_params)   ## issue_params called 
    if @issue.save                     ## save the record
      redirect_to @issue, notice: 'Issue was successfully created.'
    else
      render action: 'new'
    end
  end