2014-09-28 70 views
0

我有一个包含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其余的表单工作正常。

+1

我不确定,但是这是你正在使用'find_or_create_by',这是马上创建对象,尝试find_or_initialize_by这个bcoz。或者你可以在你指定的函数中查找'function onload(){form0;};}; form.submit(); }指定。希望它可以帮助 – Sontya 2014-09-28 16:24:44

+0

@Sontya,谢谢! find_or_initialize_by是答案!发布它,我会提交它,谢谢! – 2014-09-28 17:01:07

回答

2

我不确定,但是这是你正在使用find_or_create_by这是马上创建对象,尝试find_or_initialize_by。或者在你指定的函数onload(){form.submit(); }被指定。希望它可以帮助

+0

@Al Macks - 很高兴为你工作。 – Sontya 2014-09-28 17:44:08