繁体   English   中英

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

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

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

我的问题是显示我正在提取的数据。我已将所需的对象 (question_basic) 保存在变量 @question_basic 中,我可以使用检查、@questions_basic.inspect 在视图中正确显示该对象。 这很好,除了输出很难看而且我只需要一个名为 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 向上和交叉销售。"}

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

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

在 Rails 中,您不必定义模型的属性 - Rails 足够聪明,可以检查数据库表中的列并为所有这些列(即读者和作者)组成访问器。 通过添加上面的代码行,您正在覆盖 Rails 标准的代码,并且 Rails 变得困惑......(好吧,它不是,但它正在做一些让我们感到困惑的事情)。

删除那行代码,你应该很高兴。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM