#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, что стоило мне много времени. В любом случае, это работает, спасибо 🙂