ruby-on-rails - 如何在 Rails 中获取必要的数据
问题描述
如何在 Rails 中获取必要的数据
http://localhost:3000/terms/1/phrases_terms
过去,我检索到以下数据:
模型短语术语:
id, term_id, phrases_id
模型术语:
id , word, reding, meading
示范短语:
id , sentence
短语_术语_控制器.rb
before_action :authenticate_user!
before_action :set_term
def index
@phrases_terms = @term.phrases_terms
end
def new
@phrases_term = PhrasesTerm.new
end
def create
@phrases_term = @term.phrases_terms.new(phrases_term_params)
if @phrases_term.save
redirect_to term_phrases_terms_path(@term, @phrases_term), notice: "Phrases_Term was successfully created"
else
render "new"
end
end
private
def phrases_term_params
params.require(:phrases_term).permit(:term_id, :phrase_id)
end
def set_term
@term = Term.find(params[:term_id])
end
end
index.html.erb
<% @phrases_terms.each do |phrases_term| %>
<tr>
<td><%= phrases_term.id %></td>
<td><%= phrases_term.term_id %></td>
<td><%= phrases_term.phrase_id %></td>
</tr>
<% end %>
我现在想得到的是“词”的“词”值和“短语”的“句子”x
架构.rb
create_table "phrases_terms", force: :cascade do |t|
t.integer "phrase_id"
t.integer "term_id"
t.datetime "created_at", precision: 6, null: false
t.datetime "updated_at", precision: 6, null: false
t.index ["phrase_id"], name: "index_phrases_terms_on_phrase_id"
t.index ["term_id"], name: "index_phrases_terms_on_term_id"
end
路线.rb
resources :terms do
resources :phrases_terms, only: [:index, :create, :new]
end
解决方案
为避免 N+1 查询,在控制器中使用
def index
@phrases_terms = @term.phrases_terms
end
然后在视图中
<% @phrases_terms.each do |phrases_term| %>
<tr>
<td><%= phrases_term.id %></td>
<td><%= phrases_term.term.word %></td>
<td><%= phrases_term.phrase.sentence %></td>
</tr>
<% end %>
推荐阅读
- azure-devops - 真正寻找示例/用例,何时在 Azure Devops 中使用阶段
- indexing - 根据 ELF 文件过滤 Opengrok 索引
- excel - 比较列返回最大功率查询
- python - telebot,telegram_bot_calendar 装饰器
- javascript - 顶部菜单中的活动指示在用户手动滚动时保持同步
- rust - 为什么自定义过滤器在 log4rs(1.0) 中不起作用?
- r - 闪亮的模块:更新按钮的颜色
- node.js - 使用软件测试的真正好处是什么
- domain-driven-design - 领域驱动设计 (DDD):领域事件处理程序——将它们放置在哪里?
- excel - 如何将总和为 100% 的所有变量限制在一行中?