在我的应用程序内部,一个系列由许多书籍组成。系列的“显示”页面允许用户查看系列中的所有书籍并使用表单向系列添加新书籍。
Show页面上列出的每本书都有一个指向该书的Edit页面的链接。编辑页面包含用于最初添加书籍的相同表单。编辑书籍时,表单应自动填充书籍现有信息。
如何配置我的form_with标签,以便它既可以创建新书又可以编辑现有书(自动填写编辑表单)?我尝试了以下配置,但它们要么破坏了编辑页面,要么破坏了显示页面:
<%= form_with(model: [ @series, @series.books.build ], local: true) do |form| %>
<%= form_with(model: @book, url: series_book_path, local: true) do |form| %>
No route matches {:action=>"show", :controller=>"books", :id=>"6"}, missing required keys: [series_id]<%= form_with(model: [:series, @book], local: true) do |form| %>
Undefined method 'model_name' for nil:NilClass<%= form_with(model: [@series, @series.books.find(@book.id)], local: true) do |form| %> …我有两个班,一个Fighter班级和一个Player班级.本Player类包含一个ArrayList称为fleet被填充了玩家的船只.
我可以毫无问题地将船只添加到玩家的舰队,但是当我尝试检查玩家的舰队中是否存在战斗机时,它会给我一个错误说法Fighter cannot be resolved to a variable.
我很困惑为什么我可以为舰队添加战斗机,但无法检查是否有战斗机存在于舰队中.
Fighter.java
public class Fighter extends Ship {
public Fighter(){
super(9,1,1); //Sets attack and defense values
}
}
Run Code Online (Sandbox Code Playgroud)
Player.java
import java.util.ArrayList;
import java.util.Scanner;
public class Player {
ArrayList<Ship> fleet = new ArrayList<Ship>();
public void takeAHit(){
if (fleet.contains(Fighter)){ //Error happens here
System.out.println("Fighter found");
}
}
public void buildFleet(){
Scanner userInput = new Scanner(System.in);
System.out.println("How many fighters?");
int fighters = Integer.parseInt(userInput.next());
while …Run Code Online (Sandbox Code Playgroud)