Rails 上的 Ruby:将 model.find(params[:id]) 保存到 class 变量后,显示操作出现问题

Ruby on Rails: After saving model.find(params[:id]) into class variable, something is going wrong in show action

我有一个使用 params[:id] 进行导航的 next/back 方法。在我下次通话时,我将 id 从 url 中取出后增加一个,以便进行下一次通话。据我所知,这很好。

我的问题是显示我正在提取的数据。我已将所需的对象 (question_basic) 保存在变量 @question_basic 中,我可以使用 inspect 在视图中正确显示它,@ questions_basic.inspect。这很好,只是输出很难看,我只需要一个 column/attribute 叫做 questiontxt。我在很多其他事情中尝试了@questions_basic.questiontxt,但我得到的只是零。唯一显示任何内容的是检查。

这是我的输出:

#<QuestionsBasic ID: 5, question_group_id: 1, question_subgroup_id: 1, company_id: 1, questiontxt: "Ich führe gerne persönliche Gespräche mit anderen ..."> 

我怎样才能从这个模型中提取 questiontxt 属性?我已经尝试了一切,但我无法做到。我映射错了吗?

def index
        @i = 1
        @userprojid = current_user.project_id
        @compid= QuestionsBasic.connection.select_all("SELECT company_id FROM project WHERE ID ="+@userprojid.to_s)
        @compid= @compid.rows[0][0]
        @questions_basic = QuestionsBasic.connection.select_all("SELECT questiontxt FROM questions_basic WHERE company_id="+@compid.to_s)
    end

def new
end

def create
    @questions_basic = QuestionsBasic.new(questions_basic_params)
    @questions_basic.save
end

def show

    @questions_basic = QuestionsBasic.find(params[:id])


    @i = params[:id].to_i + 1
end






class QuestionsBasic < ActiveRecord::Base
attr_accessor :id, :questions_group_id, :question_subgroup_id, :company_id, :questiontxt
self.table_name = 'questions_basic'
self.primary_key = :ID

has_many :question_cat_basics, :class_name => 'QuestionCatBasic'
belongs_to :question_group, :class_name => 'QuestionGroup', :foreign_key => :question_group_id
belongs_to :question_subgroup, :class_name => 'QuestionSubgroup', :foreign_key => :question_subgroup_id
belongs_to :company, :class_name => 'Company', :foreign_key => :company_id




end






                <div class="col-sm-6">
                    <h1 class="title_align">Question Form 1</h1>
                    <div class="question_frame" align="center">
                        <p class="question">

                                <%= @questions_basic.inspect %>

                        </p>
<% form_tag({ :controller => "questions_basic", :action => "create"} ) do  %>
<%= hidden_field_tag(:user_id, current_user.id) %>
  <table class="answer">
  <tr>

</tr>
  </table>
  <% end %>
   <p class="extra_info">
                            <span><input type="checkbox" name="extra_important" value="very important" />
                                                                    This question is very important.</span>
                            <span><input type="checkbox" name="extra_skip" value="skip" />
                                                                        I cannot answer this question.</s>
    </p>
 <div class="buttons">

                        <%= form_tag(questions_basic_path(@i), method: "post") do %>
                        <%= submit_tag("next") %>
</div>
<% end %>
 <div class="buttons">
                        <%= form_tag(questions_basic_path(@i-2), method: "post") do %>
                        <%= submit_tag("previous") %>

@questions_basic.questiontxt.inspect

没有结果

对于@questions_basic.attributes.inspect 我得到了 {"ID"=>6, "question_group_id"=>1, "question_subgroup_id"=>2, "company_id"=>1, "questiontxt"=>"Ich fokussiere mich in den Vertriebsgesprächen ausgiebig auf Up- und Cross-Selling."}

好的,现在我们已经完成了讨论,问题似乎出在您模型中的这行代码:

attr_accessor :id, :questions_group_id, :question_subgroup_id, :company_id, :questiontxt

在 Rails 中,您不必定义模型的属性 - Rails 足够智能,可以检查数据库中的列 table 并为所有这些(即读者和作者)。通过添加上面的代码行,您将覆盖 rails-标准代码,并且 Rails 变得混乱...(不是这样,但它正在做一些让我们感到困惑的事情)。

删除那行代码,您就可以开始了。