Rails遵循href路径而不是控制器中的redirect_to

时间:2016-08-09 20:43:45

标签: ruby-on-rails

在我的Rails应用程序中,我有一个模式,可以随时点击学生进行编辑。在重定向到编辑页面之前,用户必须为正在进行的编辑提供基本原理和名称(此信息保存在另一个数据库中)。但是,在模态中的确认按钮上,我通过jQuery分配href值,并希望在单击时将页面重定向到该页面,但它遵循理性规范_rbr redirect_to子句中定义的路径。有没有办法可以让它遵循HREF属性呢?

感谢所有帮助,谢谢!

修改

模态按钮:<button class="btn btn-warning" id="editStudentConfirmBtn">Edit</button>

JS分配HREF:

var kid_id = $(this).data('id');
$("#editStudentConfirmBtn").attr("href", "/kids/" + kid_id + "/edit");

默认的rational_controller.rb设置:

def create
@rationale = Rationale.new(rationale_params)
@rationale.user = current_user
respond_to do |format|
  if @rationale.save
    format.html { redirect_to @rationale, notice: 'Rationale was successfully created.' }
    format.json { render :show, status: :created, location: @rationale }
  else
    format.html { render :new }
    format.json { render json: @rationale.errors, status: :unprocessable_entity }
  end
end

编辑2:

Modal

1 个答案:

答案 0 :(得分:0)

解决方案需要一个AJAX调用,在执行create操作后将页面重定向到指定位置。

我必须更改Rationale的控制器,如下所示:

def create
   @rationale = Rationale.new(rationale_params)
   @rationale.user = current_user
   respond_to do |format|
      if @rationale.save
        format.html { render :nothing => true }
        format.json { render :show, status: :created, location: @rationale }
      else
        format.html { render :new }
        format.json { render json: @rationale.errors, status: :unprocessable_entity }
      end
    end
 end

并改变JS如下,而不是使用jQuery为按钮分配href我只是使用AJAX调用来自动重定向页面:

$('#editStudentConfirmBtn').click(function(){
        $.ajax({
          success: function(result) {
            location.href = '/kids/' + kid_id + '/edit'
          }
      });
    });