我正在尝试呈现一个新的Event对象,并通过javascript在同一页面上呈现数据。我需要将结果显示在/ users / 1 / events / new(这是我的表格)上。我正在使用Ajax Jquery请求。但是网址不断返回未定义的内容。
以下是我尝试在该URL部分中添加的内容:
1)${this.href}.json
2)'this.action'
3)
/ users / $ {e.target.data} / events` =>此动态代码应返回整数。
我收到诸如非法调用和422(不可处理实体)之类的错误。我已经搜索过,但仍然感到困惑。 我希望我的问题结构合理。如果没有,请告诉我。
这是我的表格:
<div class="form" id="form-wrap-event" data=<%=current_user.id%>>
<%= render 'form' %>
</div>
我的current_user.id返回当前用户的ID。
这是我的events.js
function getNewEvent() {
$("#form-wrap-event").on("submit", (e) => {
e.preventDefault()
console.log("new event")
$.ajax({
method: "POST",
url: (I DON'T KNOW WHAT TO PUT HERE)
}).done(function(response){
console.log('the data is: ', response)
// console.log($(this).serialize())
// const values = $(this).serialize()
// $.post('/events', values)
// .done(function)(data) {
//
// }
})
})
}
这是我的事件控制器:
def create
@event = Event.create(event_params)
@event.host = current_user.host
@users = User.all
if !params[:event][:guest].blank?
params[:event][:guest].each do |id|
#finds guests and adds them to event's guest list
@event.guests << Guest.find_or_create_by(user_id: id)
@event.save
@user.host.events << @event
end
respond_to do |format|
format.html { redirect_to user_events_path }
format.json { render json: @event }
end
# render json: @event
# redirect_to user_events_path, flash: {success: "#{@event.name} is created!"}
else
render :new, flash: {danger: "Please enter all fields."}
end
end
答案 0 :(得分:0)
所以我放弃了ajax jquery语法,而是改用post方法。
function getNewEvent(){
$('form').submit(function(event) {
//prevent form from submitting the default way
event.preventDefault();
let values = $(this).serialize();
$.post(`${this.action}`, values).done(function(data) {
console.log(data)
$('#app-container').html('')
const newEvent = new Event(data)
const htmlToAdd = newEvent.renderHTML()
$("#app-container").html(htmlToAdd)
});
});
}