【问题标题】:How do i write my form code for 3rd nested model in Rails 5?如何在 Rails 5 中为第三个嵌套模型编写表单代码?
【发布时间】:2017-11-22 22:40:58
【问题描述】:

我正在开发一个嵌套了 3 模型的应用

resources :genres do
    resources :stories do
        resources :episodes
    end
end

与此同时,我已经能够编写流派和故事的表格,如

<%= form_for(genre) do |f| %>
 <% if genre.errors.any? %>
  <div id="error_explanation">
  <h2><%= pluralize(genre.errors.count, "error") %> prohibited this genre from being saved:</h2>

  <ul>
  <% genre.errors.full_messages.each do |message| %>
    <li><%= message %></li>
  <% end %>
  </ul>
</div>
<div class="field">
<%= f.label :name %>
<%= f.text_field :name %>
</div>

<div class="field">
   <%= f.label :description %>
  <%= f.text_area :description %>
</div>

<div class="actions">
 <%= f.submit %>
 </div>
<% end %>

和故事

<%= form_for([@genre, @genre.stories.build]) do |f| %>
<div class="field">
    <%= f.label :title %>
    <%= f.text_field :title %>
</div>

<div class="field">
    <%= f.label :summary %>
    <%= f.text_area :summary %>
</div>

<div class="actions">
   <%= f.submit %>
   </div>
<% end %>

谁能告诉我如何为剧集编写表格...

当我写这篇文章时

<%= form_for([@genre.stories, @genre.@stories.episodes.build]) do |f| %>
<div class="field">
    <%= f.label :title %>
    <%= f.text_field :title %>
</div>

<div class="field">
    <%= f.label :content %>
    <%= f.text_area :content %>
</div>

<div class="actions">
    <%= f.submit %>
</div>
<% end %>

我收到了这个错误

语法错误,意外 tIVAR,期待 '(' ...@genre.stories, @genre.@stories.episodes.build]) do |f| @out... ... ^ C:/Users/Adegbite/Documents/Apps/twiliste2/app/views/episodes/_form.html.erb:1:语法错误,意外']',期待keyword_end ...@流派.@stories.episodes.build]) 做 |f| @output_buffer.safe_... ... ^ C:/Users/Adegbite/Documents/Apps/twiliste2/app/views/episodes/_form.html.erb:16:语法错误,意外的keyword_ensure,期待输入结束

谢谢。

【问题讨论】:

  • 很好奇我提供的答案是否有帮助...
  • 是的,jvillian...我的错。我不知道为什么我无法投票。

标签: ruby-on-rails model ruby-on-rails-5


【解决方案1】:

这个:

<%= form_for([@genre.stories, @genre.@stories.episodes.build]) do |f| %>

应该更像:

<%= form_for([@genre, @story, @story.episodes.build]) do |f| %>

当然,您必须在EpisodesControllernew 操作中适当地设置@genre@story

顺便说一句,@genre.@stories 毫无意义且无效。 @stories 是一个实例变量,大概包含(或将包含)一个或多个故事。 .stories 是对 Genre 实例的方法调用。 .@stories 什么都不是。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多