rails `button_to` 嵌套参数格式不正确
rails `button_to` nested params not formatted correctly
我有控制器动作
def create
@subject_decision = SubjectDecision.new(subject_decision_params)
respond_to do |format|
if @subject_decision.save
format.html { redirect_to @subject_decision, notice: 'Subject decision was successfully created.' }
format.json { render :show, status: :created, location: @subject_decision }
else
format.html { render :new }
format.json { render json: @subject_decision.errors, status: :unprocessable_entity }
end
end
end
使用私有方法:
def subject_decision_params
params.require(:subject_decision).permit(:decision_block_id, :choice_value, :timeline_id, :practice)
end
和 button_to
的视图如下:
<%= button_to "Choice A", timeline_subject_decisions_path(timeline_id: @timeline.id), method: :post, params:
{ subject_decision:
{
decision_block_id: @db.id,
choice_value: 'a',
timeline_id: @timeline.id,
practice: true,
}
}
%>
但是当我点击按钮时,出现以下 rails 错误:
undefined method `permit' for "choice_value=a&decision_block_id=&practice=true&timeline_id=1":String
关于为什么我不能像这样提交表单 (button_to
) 的任何线索?
您可以将 button_to
格式化为
<%= button_to "Choice A", timeline_subject_decisions_path(timeline_id: @timeline.id), method: :post, params:
{
'subject_decision[decision_block_id]' => @db.id,
'subject_decision[choice_value]' => 'a',
'subject_decision[timeline_id]' => @timeline.id,
'subject_decision[practice]' => true,
}
%>
我有控制器动作
def create
@subject_decision = SubjectDecision.new(subject_decision_params)
respond_to do |format|
if @subject_decision.save
format.html { redirect_to @subject_decision, notice: 'Subject decision was successfully created.' }
format.json { render :show, status: :created, location: @subject_decision }
else
format.html { render :new }
format.json { render json: @subject_decision.errors, status: :unprocessable_entity }
end
end
end
使用私有方法:
def subject_decision_params
params.require(:subject_decision).permit(:decision_block_id, :choice_value, :timeline_id, :practice)
end
和 button_to
的视图如下:
<%= button_to "Choice A", timeline_subject_decisions_path(timeline_id: @timeline.id), method: :post, params:
{ subject_decision:
{
decision_block_id: @db.id,
choice_value: 'a',
timeline_id: @timeline.id,
practice: true,
}
}
%>
但是当我点击按钮时,出现以下 rails 错误:
undefined method `permit' for "choice_value=a&decision_block_id=&practice=true&timeline_id=1":String
关于为什么我不能像这样提交表单 (button_to
) 的任何线索?
您可以将 button_to
格式化为
<%= button_to "Choice A", timeline_subject_decisions_path(timeline_id: @timeline.id), method: :post, params:
{
'subject_decision[decision_block_id]' => @db.id,
'subject_decision[choice_value]' => 'a',
'subject_decision[timeline_id]' => @timeline.id,
'subject_decision[practice]' => true,
}
%>