我有一个名为“checked”的公式,它检查用户答案是真还是假(这需要在 javascript 中)。如果它是真的,在rails中我需要在用户和步骤之间创建一个新的关系,它具有“状态”的属性。创建后,我需要将该状态从“待处理”更改为“已完成”。用户单击下一步按钮后,我需要进行下一步。鉴于我认为我不能将 ruby 放入我的 javascript 中,我很困惑如何做到这一点。
问题.html.erb
<script>
var checked = // this is a function that returns true or false based on whether user answer is correct - assume this works
if(checked)
{
//display correct-answer dialogue
$('#modal-simple-success').modal('show') <<< this works fine
//create a relationship between User and Step (UserStep Model)
<%= current_user.user_steps.build(step_id: @step.id)} %> << need help here considering cant have ruby in javascript
//after building the relationship between the two models, change state from pending to finished
<%= @user_steps.state.finish! %> <<need help here
//move to next step
$('#next-button').on('click', move to next step??? <<need help here
}
else
{
//display wrong-answer dialogue
$('#modal-simple-failure').modal('show')
}
</script>
这是我的步骤控制器:
class StepsController < ApplicationController
def show
@course = Course.find(params[:course_id])
@level = Level.find(params[:level_id])
@step = Step.find(params[:id])
@user_step = current_user.user_steps.find(params[:id])
end
end
我想从这里改变我的提交按钮:
<div class="checkAnswer" data-toggle="modal">
<%= link_to_function "check answer", 'execute();', class: "btn btn-success"%>
</div>
对此:
<div class="checkAnswer" data-toggle="modal">
<%= form_for(current_user.user_steps.build(step_id: @step.id), remote: true) do |f| %>
<div><%= f.hidden_field :step_id %></div>
<%= f.submit "check answer", class: "btn btn-success"%>
<% end %>
</div>
但仍需要启动 execute(); 功能,但仍然不确定如何更改状态。
任何有关正确方法的帮助将不胜感激。