Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.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
Ruby on rails 如何为redmine钩子视图提供自定义控制器_Ruby On Rails_Hook_Redmine_Redmine Plugins - Fatal编程技术网

Ruby on rails 如何为redmine钩子视图提供自定义控制器

Ruby on rails 如何为redmine钩子视图提供自定义控制器,ruby-on-rails,hook,redmine,redmine-plugins,Ruby On Rails,Hook,Redmine,Redmine Plugins,我编写了一个redmine钩子视图,在问题描述的底部添加字段。 我的钩子视图需要从问题控制器以外的另一个控制器中提取数据 我使用以下代码创建了我的钩子: module RedmineKnowledgebase class Hooks < Redmine::Hook::ViewListener def view_issues_show_description_bottom(context = {}) context[:controller].send(:render_to_string, {

我编写了一个redmine钩子视图,在问题描述的底部添加字段。 我的钩子视图需要从问题控制器以外的另一个控制器中提取数据

我使用以下代码创建了我的钩子:

module RedmineKnowledgebase
class Hooks < Redmine::Hook::ViewListener
def view_issues_show_description_bottom(context = {})
context[:controller].send(:render_to_string, {
:partial => " redmine_plugin_xxx/hooks/view_issues_show_
description_bottom",
:locals => context
})
end
end
end
模块RedmineKnowledgebase
类Hooks“redmine\u plugin\u xxx/hooks/view\u issues\u show_
说明(下)“,
:locals=>context
})
结束
结束
结束
在我的hook视图中,我有一张表需要填写:

<tbody>
    <% @ok_results.each do |res| %>
      <tr>
        <td><%= res.id %></td>
        <td><%= res.key %></td>
        <td><%= res.value %></td>      
      </tr>
    <% end %>
  </tbody>

基本上,my@ok_results变量应该由使用couchdb rest模型的控制器提供,而不是由问题控制器提供

应提供@ok_results变量的控制器如下所示:

class RequirementsController < ApplicationController
  before_action :set_requirement, only: [:show, :edit, :update, :destroy]

  # GET /requirements
  # GET /requirements.json
  def index
    #@requirements = requirement.all
    #Requirement.create(:first_name => "Homer", :last_name => "Simpson")
  end

  # GET /requirements/1
  # GET /requirements/1.json
  def show
  end

  def ok_result
    @ok_results = Requirement.ok_result.rows
  end

  def by_topic
    @by_topic_record = Requirement.by_topic.rows
  end

  def by_requirement_no
  @by_req_record = Requirement.by_requirement_no.rows
  end

  # GET /requirements/new
  def new
    @requirement = Requirement.new
  end

  # GET /requirements/1/edit
  def edit
  end

  # POST /requirements
  # POST /requirements.json
  def create
    @requirement = Requirement.new(requirement_params)
    print requirement_params[:name]
    print requirement_params[:email]
    respond_to do |format|
      if @requirement.save
        format.html { redirect_to @requirement, notice: 'requirement was successfully created.' }
        format.json { render :show, status: :created, location: @requirement }
      else
        format.html { render :new }
        format.json { render json: @requirement.errors, status: :unprocessable_entity }
      end
    end
  end
require 'couchrest_model'

class Requirement < CouchRest::Model::Base
  use_database 'raw_files'
  property :requirement_no, String
  property :test_case, Array
  property :topic, Array
  property :round_1, Array
  property :ecupn, Array
  property :sim_tool_pn, Array
  property :details, Array
  design do
    view :by_topic, :map => "function(doc){if(doc.topic){emit(doc.topic,doc.details)}}"
    view :by_requirement_no, :map => "function(doc){if(doc.requirement_no){emit(doc.requirement_no,doc.test_case)}}"
    view :ok_result,
      :map =>
        "function(doc) {
          if (doc['requirement_no']) {
            doc.round_1.forEach(function(res, index){
                if(res == 'OK')
                emit(doc.requirement_no, [doc.test_case[index], doc.topic[index]]);
            });
          }
        }"
  end
  timestamps!

end
类要求控制器“Homer”,:last\u name=>“Simpson”)
结束
#获取/要求/1
#GET/requirements/1.json
def秀
结束
def ok_结果
@ok_结果=Requirement.ok_结果.rows
结束
def by_主题
@按主题记录=Requirement.by主题行
结束
def由需求决定
@按需求记录=需求。按需求行
结束
#获取/要求/新
def新
@requirement=requirement.new
结束
#获取/需求/1/编辑
定义编辑
结束
#员额/要求
#POST/requirements.json
def创建
@需求=需求。新(需求参数)
打印要求参数[:名称]
打印要求参数[:电子邮件]
回应待办事项|格式|
如果@requirement.save
format.html{将_重定向到@requirement,注意:“requirement已成功创建”。}
format.json{render:show,status::created,location:@requirement}
其他的
format.html{render:new}
format.json{render json:@requirement.errors,status::unprocessable_entity}
结束
结束
结束
与上述控制器相关的沙发db型号如下:

class RequirementsController < ApplicationController
  before_action :set_requirement, only: [:show, :edit, :update, :destroy]

  # GET /requirements
  # GET /requirements.json
  def index
    #@requirements = requirement.all
    #Requirement.create(:first_name => "Homer", :last_name => "Simpson")
  end

  # GET /requirements/1
  # GET /requirements/1.json
  def show
  end

  def ok_result
    @ok_results = Requirement.ok_result.rows
  end

  def by_topic
    @by_topic_record = Requirement.by_topic.rows
  end

  def by_requirement_no
  @by_req_record = Requirement.by_requirement_no.rows
  end

  # GET /requirements/new
  def new
    @requirement = Requirement.new
  end

  # GET /requirements/1/edit
  def edit
  end

  # POST /requirements
  # POST /requirements.json
  def create
    @requirement = Requirement.new(requirement_params)
    print requirement_params[:name]
    print requirement_params[:email]
    respond_to do |format|
      if @requirement.save
        format.html { redirect_to @requirement, notice: 'requirement was successfully created.' }
        format.json { render :show, status: :created, location: @requirement }
      else
        format.html { render :new }
        format.json { render json: @requirement.errors, status: :unprocessable_entity }
      end
    end
  end
require 'couchrest_model'

class Requirement < CouchRest::Model::Base
  use_database 'raw_files'
  property :requirement_no, String
  property :test_case, Array
  property :topic, Array
  property :round_1, Array
  property :ecupn, Array
  property :sim_tool_pn, Array
  property :details, Array
  design do
    view :by_topic, :map => "function(doc){if(doc.topic){emit(doc.topic,doc.details)}}"
    view :by_requirement_no, :map => "function(doc){if(doc.requirement_no){emit(doc.requirement_no,doc.test_case)}}"
    view :ok_result,
      :map =>
        "function(doc) {
          if (doc['requirement_no']) {
            doc.round_1.forEach(function(res, index){
                if(res == 'OK')
                emit(doc.requirement_no, [doc.test_case[index], doc.topic[index]]);
            });
          }
        }"
  end
  timestamps!

end
require'couchrest_model'
类需求“函数(doc){if(doc.topic){emit(doc.topic,doc.details)}”
视图:按需求号:map=>“函数(文档){if(文档需求号){emit(文档需求号,文档测试用例)}”
视图:ok_结果,
:map=>
“职能(doc){
如果(文件[“要求编号]){
doc.round_1.forEach(函数(res,索引){
如果(res=='OK')
发出(文件需求号、[文件测试用例[索引]、文件主题[索引]);
});
}
}"
结束
时间戳!
结束

如何解决此问题?

您希望将数据拉至问题控制器的数据是如何存储的?你能显示另一个控制器和数据吗?@PeterAndersen我通过添加我的控制器和模型更新了问题我帮不了你对不起。我以前从未见过这样的模特。