Ruby on rails 用rails表单中的另一个模型属性替换一个模型属性
我正在用Rails构建一个非常简单的电影评论应用程序,它没有任何身份验证系统 该应用程序具有:Ruby on rails 用rails表单中的另一个模型属性替换一个模型属性,ruby-on-rails,forms,attributes,Ruby On Rails,Forms,Attributes,我正在用Rails构建一个非常简单的电影评论应用程序,它没有任何身份验证系统 该应用程序具有: 一个用户模型(id、姓名、电子邮件),它有许多评论和评论 一个评论模型(id、标题、图像、内容),属于一个用户,并有许多评论 一个评论模型(id、内容),属于一个用户,属于一个评论 以下是_form.html.erb文件供评论: <%= bootstrap_form_for(@comment) do |f| %> <% if @comment.errors.any? %>
- 一个用户模型(id、姓名、电子邮件),它有许多评论和评论
- 一个评论模型(id、标题、图像、内容),属于一个用户,并有许多评论
- 一个评论模型(id、内容),属于一个用户,属于一个评论
<%= bootstrap_form_for(@comment) do |f| %>
<% if @comment.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(@comment.errors.count, "error") %> prohibited this comment from being saved:</h2>
<ul>
<% @comment.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
</div>
<% end %>
<div class="field">
<%= f.text_field :content %>
</div>
<div class="field">
<%= f.number_field :review_id %>
</div>
<div class="field">
<%= f.number_field :user_id %>
</div>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
禁止保存此评论:
添加/编辑评论时,用户可以选择评论将归于的评论,这要感谢:
<div class="field">
<%= f.number_field :review_id %>
</div>
这让他可以在审查ID之间进行选择
相反,我希望用户能够选择他想要评论的评论的评论标题
我试图用to_param方法修改审查模型,但没有解决问题,实际上在应用程序中产生了一些其他错误
我如何解决这个问题?不确定我是否遵循了,但您能在这里使用select标记吗 这假设您在控制器中定义了一个名为@reviews的实例变量,该变量将可用。 在这种情况下,@reviews可能类似于Review.all
select_tag "review", options_from_collection_for_select(@reviews, "id", "title"), prompt: "Select a review"
不确定我是否遵循,但您能在这里使用select标记吗 这假设您在控制器中定义了一个名为@reviews的实例变量,该变量将可用。 在这种情况下,@reviews可能类似于Review.all
select_tag "review", options_from_collection_for_select(@reviews, "id", "title"), prompt: "Select a review"
关于
ply
的答案,您必须记住的是,当您填充基于对象的表单时,您实际上是在获取模型的属性并填充它们
:
通常,设计用于创建或更新资源的表单反映
资源的标识有几种方式:(i)表单所在的url
发送到(表单元素的action属性)应导致
请求被路由到相应的控制器操作(使用
适当:现有资源情况下的id参数,(ii)
输入字段的命名方式应确保在控制器中
它们的值出现在参数散列中的适当位置,
以及(iii)对于现有记录,当表格最初
显示与资源属性对应的输入字段
应显示这些属性的当前值
--
您正在填充注释
模型对象-这将在数据库中定义属性,例如正文
,标题
等
Comment
模型中的一个属性是review\u id
对于Comment
模型,如何将review\u id
传递给它并不重要;就因为它已经完成了。这就是为什么使用text\u字段
直接输入id,或者使用select
标记帮助用户选择他们想要的项目并不重要
--
<%= f.collection_select(:review_id, Review.all,
:id, :title,
{:prompt => 'Please select the review of this comment'}) %>
关于ply
的答案,您必须记住的是,当您填充基于对象的表单时,您实际上是在获取模型的属性并填充它们
:
通常,设计用于创建或更新资源的表单反映
资源的标识有几种方式:(i)表单所在的url
发送到(表单元素的action属性)应导致
请求被路由到相应的控制器操作(使用
适当:现有资源情况下的id参数,(ii)
输入字段的命名方式应确保在控制器中
它们的值出现在参数散列中的适当位置,
以及(iii)对于现有记录,当表格最初
显示与资源属性对应的输入字段
应显示这些属性的当前值
--
您正在填充注释
模型对象-这将在数据库中定义属性,例如正文
,标题
等
Comment
模型中的一个属性是review\u id
对于Comment
模型,如何将review\u id
传递给它并不重要;就因为它已经完成了。这就是为什么使用text\u字段
直接输入id,或者使用select
标记帮助用户选择他们想要的项目并不重要
--
<%= f.collection_select(:review_id, Review.all,
:id, :title,
{:prompt => 'Please select the review of this comment'}) %>
非常感谢Rich:两人都提出解决我的“问题”。非常感谢Rich:两人都提出解决我的“问题”。