Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 用rails表单中的另一个模型属性替换一个模型属性_Ruby On Rails_Forms_Attributes - Fatal编程技术网

Ruby on 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? %>

我正在用Rails构建一个非常简单的电影评论应用程序,它没有任何身份验证系统

该应用程序具有:

  • 一个用户模型(id、姓名、电子邮件),它有许多评论和评论
  • 一个评论模型(id、标题、图像、内容),属于一个用户,并有许多评论
  • 一个评论模型(id、内容),属于一个用户,属于一个评论
以下是_form.html.erb文件供评论:

<%= 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:两人都提出解决我的“问题”。