2014-09-28 3 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

Я не уверен, но этот bcoz вы используете 'find_or_create_by', который сразу же создает объект, попробуйте find_or_initialize_by. Или посмотрите в javascript где-то вы указали 'function onload() { form.submit(); } '. Надеюсь, это может помочь – Sontya

+0

@Sontya, спасибо! Ответ был найден с помощью find_or_initialize_by! Отправьте его, и я отправлю его, спасибо! –

ответ

2

Я не уверен, но этот bcoz вы используете find_or_create_by, который сразу же создает объект, попробуйте find_or_initialize_by. Или посмотрите в javascript где-то вы указали функцию onload() {form.submit(); }. Надеюсь, это может помочь

+0

@Al Macks - рад, что он работает на вас. – Sontya

Смежные вопросы