У меня есть рейтинговая форма с 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 Для остальных форма отлично работает.
Я не уверен, но этот bcoz вы используете 'find_or_create_by', который сразу же создает объект, попробуйте find_or_initialize_by. Или посмотрите в javascript где-то вы указали 'function onload() { form.submit(); } '. Надеюсь, это может помочь – Sontya
@Sontya, спасибо! Ответ был найден с помощью find_or_initialize_by! Отправьте его, и я отправлю его, спасибо! –