我有一个包含5个收音机和一个提交按钮的评级表。问题是当我访问这个页面时,出于某种原因它尝试提交表单(当然,值为'零')。验证不会让这样做,所以它会呈现错误消息,这不是很好。当我访问页面时,Rails表格会自动提交
评级表:
= simple_form_for @shop.ratings.find_or_create_by(user_id: user_id),
:html => {:id => form_id,
:class => "star_rating_form"} do |f|
= f.hidden_field :shop_id, :value => @shop.id
- if signed_in?
= f.hidden_field :user_id, :value => current_user.id
= f.input :stars,
:label => "",
:collection => [[1], [2], [3], [4], [5]],
:label_method => :last,
:value_method => :first,
:as => :radio_buttons,
:item_wrapper_class => 'inline',
:checked => true
= f.submit
评分控制器:
class RatingsController < InheritedResources::Base
belongs_to :shop
actions :create, :update
def create
@shop = Shop.find(params[:rating][:shop_id])
super
end
def update
@shop = Shop.find(params[:rating][:shop_id])
super
end
private
def permitted_params
params.permit(:rating => [:stars])
end
我试过但是做这样super unless params[:rating][:stars] == 0
,它并没有帮助。
PS其余的表单工作正常。
我不确定,但是这是你正在使用'find_or_create_by',这是马上创建对象,尝试find_or_initialize_by这个bcoz。或者你可以在你指定的函数中查找'function onload(){form0;};}; form.submit(); }指定。希望它可以帮助 – Sontya 2014-09-28 16:24:44
@Sontya,谢谢! find_or_initialize_by是答案!发布它,我会提交它,谢谢! – 2014-09-28 17:01:07