我有一个相当直截了当的问题。
在我的网站上,标题中有一个“邀请同事”链接到包含表单的模式:
<%= simple_form_for(current_user, :url => send_invite_user_path(current_user), remote: true) do |f| %>
<%= f.label :email %><br>
<%= f.text_field :email, class: 'form-control' %>
<%= f.submit "Send", class: "btn btn-primary ShareSend" %>
<% end %>
这是发送邀请控制器
def send_invite
@current_page = URI(request.referer).path
@email = params[:user][:email]
InviteWorker.perform_async(current_user.id, @email)
respond_to do |format|
flash.now[:success] = "Invite sent"
format.html { redirect_to @current_page, :current_page => @current_page}
format.js { render @current_page}
end
end
它在不使用 AJAX 时工作正常,但我想尝试让它通过 AJAX 工作。问题是,当我打开模式并尝试通过 AJAX 发送时,“current_page”指的是“send_invite”操作,并且正在寻找“send_invite”模板。我希望它呈现用户所在的任何页面。为了增加我的难度,我正在使用friendly_id .....我尝试使用
@page_hash = Rails.application.routes.recognize_path(URI(request.referer).path)
尝试从当前页面路径中提取用户操作,但显然这不适用于友好 id。
是否有捕获当前页面(忽略模式)并将其传递给渲染的“Rails 方式”。
我希望这很清楚...