Преглед на файлове

Easier to edit queries with variables without sessions

Andrew Kane преди 9 години
родител
ревизия
0903dca92a
променени са 3 файла, в които са добавени 10 реда и са изтрити 10 реда
  1. 5 6
      app/controllers/blazer/queries_controller.rb
  2. 3 2
      app/views/blazer/queries/_form.html.erb
  3. 2 2
      app/views/blazer/queries/show.html.erb

+ 5 - 6
app/controllers/blazer/queries_controller.rb

@@ -29,7 +29,7 @@ module Blazer
       @query.creator = current_user if respond_to?(:current_user) && Blazer.user_class
 
       if @query.save
-        redirect_to @query
+        redirect_to query_path(@query, variable_params)
       else
         render :new
       end
@@ -37,7 +37,6 @@ module Blazer
 
     def show
       @statement = @query.statement.dup
-      session[:blazer_params] = params.except(:controller, :action, :id, :host)
       process_vars(@statement)
 
       @smart_vars = {}
@@ -116,7 +115,7 @@ module Blazer
 
     def update
       if @query.update(query_params)
-        redirect_to query_path(@query, session_params.merge(only_path: true))
+        redirect_to query_path(@query, variable_params)
       else
         render :edit
       end
@@ -180,7 +179,6 @@ module Blazer
 
     def process_vars(statement)
       @bind_vars = extract_vars(statement)
-      params = session_params.merge(self.params)
       @success = @bind_vars.all? { |v| params[v] }
 
       if @success
@@ -195,9 +193,10 @@ module Blazer
       end
     end
 
-    def session_params
-      session[:blazer_params] || {}
+    def variable_params
+      params.except(:controller, :action, :id, :host, :query, :table_names, :authenticity_token, :utf8, :_method, :commit)
     end
+    helper_method :variable_params
 
     def settings
       YAML.load(File.read(Rails.root.join("config", "blazer.yml")))

+ 3 - 2
app/views/blazer/queries/_form.html.erb

@@ -2,7 +2,7 @@
   <div class="alert alert-danger"><%= @query.errors.full_messages.first %></div>
 <% end %>
 
-<%= form_for @query, html: {class: "the_form", autocomplete: "off"} do |f| %>
+<%= form_for @query, url: (@query.persisted? ? query_path(@query, variable_params) : queries_path(variable_params)), html: {class: "the_form", autocomplete: "off"} do |f| %>
   <div class="row">
     <div class="col-xs-8">
       <div class= "form-group">
@@ -85,6 +85,7 @@
 
   var error_line = null;
   var xhr;
+  var params = <%= raw json_escape(variable_params.to_json) %>;
 
   $("#run").click(function (e) {
     e.preventDefault();
@@ -98,7 +99,7 @@
     if (xhr) {
       xhr.abort();
     }
-    xhr = $.post("<%= run_queries_path %>", {statement: editor.getValue()}, function (data) {
+    xhr = $.post("<%= run_queries_path %>", $.extend({}, params, {statement: editor.getValue()}), function (data) {
       $("#results").html(data);
 
       error_line = /LINE (\d+)/g.exec($("#results").find('.alert-danger').text());

+ 2 - 2
app/views/blazer/queries/show.html.erb

@@ -10,8 +10,8 @@
         </h3>
       </div>
       <div class="col-sm-3 text-right">
-        <%= link_to "Edit", edit_query_path(@query), class: "btn btn-default" %>
-        <%= link_to "Fork", new_query_path(statement: @query.statement), class: "btn btn-info" %>
+        <%= link_to "Edit", edit_query_path(@query, variable_params), class: "btn btn-default" %>
+        <%= link_to "Fork", new_query_path(variable_params.merge(statement: @query.statement)), class: "btn btn-info" %>
 
         <% if !@error && @success %>
           <%= button_to "Download", run_queries_path(statement: @statement, query_id: @query.id, format: "csv"), class: "btn btn-primary" %>