jQuery, Rails и Ajax ОТПРАВЛЯЮТ в базу данных

#jquery #ruby-on-rails #ajax #http

#jquery #ruby-on-rails #ajax #http

Вопрос:

Я хотел выполнить POST-запрос к маршруту ‘create’, сгенерированному с помощью scaffolding. Имя контроллера — ‘Translation’, а маршрут создания — ‘/translation’. Для этого я создал ajax-запрос с помощью jQuery. Мой запрос выглядит следующим образом —

 $.ajax({
        type: "POST",
        url: "/translations",
        data: ?,
        success: function(msg){
        alert(msg);
        }
});
  

Я хочу, чтобы данные включали мои параметры, чтобы сгенерированный перевод имел эти значения. Параметрами перевода являются ‘source’ и ‘output’.
Метод create, созданный scaffolding, для контроллера преобразования выглядит следующим образом —

   def create
    @translation = Translation.new(params[:translation])

    respond_to do |format|
      if @translation.save
        format.html { redirect_to(@translation, :notice => 'Translation was successfully created.') }
        format.xml  { render :xml => @translation, :status => :created, :location => @translation }
      else
        format.html { render :action => "new" }
        format.xml  { render :xml => @translation.errors, :status => :unprocessable_entity }
      end
    end
  end
  

Я пытался вставить разные значения в данные, но они не применяются. Создается новый перевод, но без параметров.
Это параметры данных, которые я пытался вставить до сих пор, чтобы сделать ‘выходное’ значение ‘hello’ —

 data: {'source':'hello'}
data: "source=hello"
data: {translations:{'source':'hello'}}
  

Ответ №1:

Попробуйте с

 data = { translation : { source : 'hello' } }
  

Но … используете ли вы помощники формы? гораздо проще правильно отформатировать это поле.

Комментарии:

1. Я знаю, как это сделать с помощью rails forms, но я все еще хотел сделать это с помощью jQuery. Я ленился переводить свои функции javascript на ruby, что стоило мне много времени. В любом случае, это работает, спасибо 🙂