[英]ruby on rails can i use something like Model.find(params[:id]).where()
[英]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.