1
我有一個通過ajax(使用remotipart gem)上傳文件的表單工作正常。我想從服務器作爲JSON的響應,並在瀏覽器上觸發一個JavaScript函數。我怎樣才能做到這一點?我可以更改表單標籤中的設置嗎?ROR - 從控制器請求JSON
查看:
<%= form_tag import_companies_path, remote: true do %>
<%= file_field_tag :file %>
<%= submit_tag "Import" %>
<%end%>
位指示:
def import
respond_to do |format|
options = { col_sep: ',', converters: :numeric, headers: true }
array = []
CSV.foreach(params[:file].path, options) do |row|
array.push(row.to_hash)
end
logger.debug "Parsed CSV companies: #{array.inspect}"
format.html { redirect_to companies_path }
format.json{
render json: { items: JSON.pretty_generate(array)}
}
format.js { render js: JSON.pretty_generate(array) }
end
end
真棒這工作!另一種選擇是什麼?我想處理ajax成功/錯誤... – Emon
@Emon其他選項有:(1)使用jQuery發送ajax表單提交; (2)以'json'格式回覆而不是'js',但這涉及監聽窗體事件('ajax:complete'),實際上它也不適合使用'remote:true'。我會打賭(1)或我的答案中給出的內容。答案是更多的「Railsy」,然後選項(1)。 – dimakura
還有一種方法是從表單視圖中刪除「receiverFunction」,並在'js'視圖中定義它。但在我看來,這太過分了。 – dimakura