我的形式有这样的形式字段:
<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
因此,我没有权限问题,只会在以后添加标签时发生,然后才会使用标签。
答案 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