Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用js和ruby制作的键盘时出错_Javascript_Ruby On Rails - Fatal编程技术网

Javascript 使用js和ruby制作的键盘时出错

Javascript 使用js和ruby制作的键盘时出错,javascript,ruby-on-rails,Javascript,Ruby On Rails,这是我的第一个问题,所以,我会尽力做到最好 我试图在rails应用程序中加入一个键盘,以便用户在搜索时输入一些特殊字符。键盘是用JavaScript制作的,应用程序是用ROR运行的。没有键盘一切正常,但一旦我输入name:search(允许js在我的文本中包含字符)后,rails在QuestionsControllercreate中获得以下错误name错误,但是如果我从视图中删除name:search,应用程序运行正常,但显然我无法输入任何字符 这是我的看法 <%=

这是我的第一个问题,所以,我会尽力做到最好

我试图在rails应用程序中加入一个键盘,以便用户在搜索时输入一些特殊字符。键盘是用JavaScript制作的,应用程序是用ROR运行的。没有键盘一切正常,但一旦我输入name:search(允许js在我的文本中包含字符)后,rails在QuestionsControllercreate中获得以下错误name错误,但是如果我从视图中删除name:search,应用程序运行正常,但显然我无法输入任何字符

这是我的看法

            <%= form_for(@question, role: "search", html: {class: "form-search", id:"searchform",name: "search1"}) do |f| %>
          <div class="input-group">
            <%= f.text_field :content,class: "form-control input-lg", name: "search", id: "autocomplete-dynamic", placeholder: "Escribe tu pregunta, ejemplo: ¿ Cuánto es 2+2 ?"%>
            <span class="input-group-btn">
              <% if current_user %>
                <%= f.submit "Preguntar", :class => "btn" %>
              <% else %>
                <%= link_to 'Preguntar',new_user_registration_path, class: 'btn' %>
              <% end %>
          </span>
          </div>
          <div class="keyboard">
            <span class="glyphicon glyphicon-th"></span>
           </div>

          <div id="keyboard" class="wrap">
            <div class="content">
              <div id="first_row">
                <td><input type="button" value="±" onclick="retornar(value)"></td>
                <td><input type="button" value="∞" onclick="retornar(value)"></td>
                <td><input type="button" value="=" onclick="retornar(value)"></td>
                <td><input type="button" value="≠" onclick="retornar(value)"></td>
                <td><input type="button" value="∫" onclick="retornar(value)"></td>
                <td><input type="button" value="~" onclick="retornar(value)"></td>
                <td><input type="button" value="×" onclick="retornar(value)"></td>
                <td><input type="button" value="≈" onclick="retornar(value)"></td>
                <td><input type="button" value="÷" onclick="retornar(value)"></td>
                <td><input type="button" value="!" onclick="retornar(value)"></td>
                <td><input type="button" value="∝" onclick="retornar(value)"></td>
                <td><input type="button" value="<" onclick="retornar(value)"></td>
                <td><input type="button" value="≪" onclick="retornar(value)"></td>
                <td><input type="button" value=">" onclick="retornar(value)"></td>
              </div>
        <% end %>
问题控制员:

 class QuestionsController < ApplicationController

  before_action :set_question, only: [:show, :edit, :update, :destroy]
  before_action :question_params


  def index
    @questions = current_user.questions
  end

  def new
    @question = Question.new
  end

  def create
    @question = current_user.questions.new(question_params)
    respond_to do |format|
      if @question.save
        format.html { redirect_to questions_path, notice: 'Tu pregunta fue creada con exito.' }
        format.json { render action: 'show', status: :created, location: @question }
      else
        format.html { render action: 'new' }
        format.json { render json: @question.errors, status: :unprocessable_entity }
      end
    end
  end

  def update
    respond_to do |format|
      if @question.update(question_params)
        format.html { redirect_to @question, notice: 'Pregunta actualizada con exito.' }
        format.json { head :no_content }
      else
        format.html { render action: 'edit' }
        format.json { render json: @question.errors, status: :unprocessable_entity }
      end
    end
  end

 def destroy
    @question.destroy
    respond_to do |format|
      format.html { redirect_to questions_url }
      format.json { head :no_content }
    end
  end

  private

    def set_question
      @question = Question.find(params[:id])
    end

    def question_params
      params.require(question).permit(:content , :answer, :user_id,)
    end
end
还有我的控制台

Completed 400 Bad Request in 49ms

ActionController::ParameterMissing (param not found: ):
  app/controllers/questions_controller.rb:72:in `question_params'
  app/controllers/questions_controller.rb:27:in `create'


  Rendered /home/george/.rvm/gems/ruby-2.1.2/gems/actionpack-4.0.2/lib/action_dispatch/middleware/templates/rescues/_source.erb (2.2ms)
  Rendered /home/george/.rvm/gems/ruby-2.1.2/gems/actionpack-4.0.2/lib/action_dispatch/middleware/templates/rescues/_trace.erb (3.0ms)
  Rendered /home/george/.rvm/gems/ruby-2.1.2/gems/actionpack-4.0.2/lib/action_dispatch/middleware/templates/rescues/_request_and_response.erb (4.1ms)
  Rendered /home/george/.rvm/gems/ruby-2.1.2/gems/actionpack-4.0.2/lib/action_dispatch/middleware/templates/rescues/diagnostics.erb within rescues/layout (34.7ms)


Started POST "/questions" for 127.0.0.1 at 2014-11-09 15:02:25 -0500
Processing by QuestionsController#create as HTML
  Parameters: {"utf8"=>"✓", "authenticity_token"=>"S3PJDzjKanM1wVmn76tZGmaIF6GcU6+crn3N6ijbB5Q=", "search"=>"dddd≥≥≥≅≅≅", "commit"=>"Preguntar"}
Completed 500 Internal Server Error in 17ms

NameError (undefined local variable or method `question' for #<QuestionsController:0xc29cc94>):
  app/controllers/questions_controller.rb:72:in `question_params'


  Rendered /home/george/.rvm/gems/ruby-2.1.2/gems/actionpack-4.0.2/lib/action_dispatch/middleware/templates/rescues/_source.erb (1.9ms)
  Rendered /home/george/.rvm/gems/ruby-2.1.2/gems/actionpack-4.0.2/lib/action_dispatch/middleware/templates/rescues/_trace.erb (2.8ms)
  Rendered /home/george/.rvm/gems/ruby-2.1.2/gems/actionpack-4.0.2/lib/action_dispatch/middleware/templates/rescues/_request_and_response.erb (2.2ms)
  Rendered /home/george/.rvm/gems/ruby-2.1.2/gems/actionpack-4.0.2/lib/action_dispatch/middleware/templates/rescues/diagnostics.erb within rescues/layout (66.4ms)

问题参数方法有两个错误:

必须将param的名称作为符号传递给require方法:question 参数的后面有一个前导逗号。 因此,该方法的固定版本如下:

def question_params
  params.require(:question).permit(:content, :answer, :user_id)
end

这是解决办法。整个问题是js和视图

我的重构javascript

function retornar(num){
    var anterior = document.getElementById("autocomplete-dynamic").value;
    document.getElementById("autocomplete-dynamic").value=anterior+num;
}
还有我的全新观点

        <div class="row">
          <div class="hero-box col-sm-8 col-sm-offset-2">

            <%= form_for(@question, html: {class: "form-search"}) do |f| %>
              <div class="input-group">
                <%= f.text_field :content,class: "form-control input-lg", id: "autocomplete-dynamic", placeholder: "Escribe tu pregunta, ejemplo: ¿ Cuánto es 2+2 ?" %>
                <span class="input-group-btn">
                  <% if current_user %>
                    <%= f.submit "Preguntar", :class => "btn" %>
                  <% else %>
                    <%= link_to 'Preguntar',new_user_registration_path, class: 'btn' %>
                  <% end %>
              </span>
              </div>
            <% end %>

              <div class="keyboard">
                <span class="glyphicon glyphicon-th"></span>
               </div>

              <div id="keyboard" class="wrap">
                <div class="content">
                  <div id="first_row">
                    <td><input type="button" value="±" onclick="retornar(value)"></td>
                    <td><input type="button" value="∞" onclick="retornar(value)"></td>
                    <td><input type="button" value="=" onclick="retornar(value)"></td>
                    <td><input type="button" value="≠" onclick="retornar(value)"></td>
                    <td><input type="button" value="∫" onclick="retornar(value)"></td>
                    <td><input type="button" value="~" onclick="retornar(value)"></td>
                    <td><input type="button" value="×" onclick="retornar(value)"></td>
                    <td><input type="button" value="≈" onclick="retornar(value)"></td>
                    <td><input type="button" value="÷" onclick="retornar(value)"></td>
                    <td><input type="button" value="!" onclick="retornar(value)"></td>
                    <td><input type="button" value="∝" onclick="retornar(value)"></td>
                    <td><input type="button" value="<" onclick="retornar(value)"></td>
                    <td><input type="button" value="≪" onclick="retornar(value)"></td>
                    <td><input type="button" value=">" onclick="retornar(value)"></td>
                  </div>
</div>
</div>

感谢@guillermo的大力支持

感谢您的回答,但即使这些修复错误一直显示出来,我认为问题应该在强参数中。
function retornar(num){
    var anterior = document.getElementById("autocomplete-dynamic").value;
    document.getElementById("autocomplete-dynamic").value=anterior+num;
}
        <div class="row">
          <div class="hero-box col-sm-8 col-sm-offset-2">

            <%= form_for(@question, html: {class: "form-search"}) do |f| %>
              <div class="input-group">
                <%= f.text_field :content,class: "form-control input-lg", id: "autocomplete-dynamic", placeholder: "Escribe tu pregunta, ejemplo: ¿ Cuánto es 2+2 ?" %>
                <span class="input-group-btn">
                  <% if current_user %>
                    <%= f.submit "Preguntar", :class => "btn" %>
                  <% else %>
                    <%= link_to 'Preguntar',new_user_registration_path, class: 'btn' %>
                  <% end %>
              </span>
              </div>
            <% end %>

              <div class="keyboard">
                <span class="glyphicon glyphicon-th"></span>
               </div>

              <div id="keyboard" class="wrap">
                <div class="content">
                  <div id="first_row">
                    <td><input type="button" value="±" onclick="retornar(value)"></td>
                    <td><input type="button" value="∞" onclick="retornar(value)"></td>
                    <td><input type="button" value="=" onclick="retornar(value)"></td>
                    <td><input type="button" value="≠" onclick="retornar(value)"></td>
                    <td><input type="button" value="∫" onclick="retornar(value)"></td>
                    <td><input type="button" value="~" onclick="retornar(value)"></td>
                    <td><input type="button" value="×" onclick="retornar(value)"></td>
                    <td><input type="button" value="≈" onclick="retornar(value)"></td>
                    <td><input type="button" value="÷" onclick="retornar(value)"></td>
                    <td><input type="button" value="!" onclick="retornar(value)"></td>
                    <td><input type="button" value="∝" onclick="retornar(value)"></td>
                    <td><input type="button" value="<" onclick="retornar(value)"></td>
                    <td><input type="button" value="≪" onclick="retornar(value)"></td>
                    <td><input type="button" value=">" onclick="retornar(value)"></td>
                  </div>
</div>
</div>