我这样做是为了一个学校项目而且它不起作用。 :( 如何从视图中取出选定的[petowner_id]并使其在ruby控制器中可用? 如何在视图中的控制器中使@selected_pet = params([petowner_id])生效?目前,当我尝试设置它时,它会呈现错误消息。 :( 我厌倦了它不工作。
宠物控制器的控制器
class PetsController < ApplicationController
# GET /pets
# GET /pets.json
def monsters
#Finds the current user
if current_user
@user = current_user
@pets_kept = [] #why?
#@petowner = Petowner.find(params[:petowner][:id])
#if(params[:commit])
#end
@monster = "Eeeep"
@mypets=[]
@all_my_pets = @user.petowners
#options value = 2
#params { selected_petowner[petowner_id]}
@selectpet = params{[selected][petowner_id]}
@petowner = Petowner.find_by_id(params[:id])
@pet = Pet.find_by_id(params[:pet_id])
#Find the petowners that the user currently has
#@mypets = @user.petowners
#This is my way of doing things in a C++ fashion, I don't get all ruby things
@user.petowners.each do |pet|
#@selected_pet = pet.find(params[:selected])
# if pet.hp != 0
# @pets_kept << pet #Dont recall seeing the << before in ruby but for C++ statement used for cout statements
#if pet.select
# @selected_pet = pet.select
#end
end
#@selected_pet = Petowner.find(params[:petowner][:selected])
#end
@selected_pet = 1 #@user.petowners.find(params[:id])
@mypets = current_user.petowners.select{|pet| pet.hp !=0}
#raise "I am here"
#@selected_pet = @mypets.find(params[:id][:selected])
#@mypets = @pets_kept
end
视图中的代码不会返回到控制器变量并进行设置。 :(
<select id="petowner_id" name="selected[petowner_id]">
<%= @all_my_pets.each do |pet| %>
<option value="<%= pet.id %>"><%= pet.pet_name %></option>
<% end %>
</select>
从宠物/怪物视图的上一步,从以前的集合中完全不起作用。 :(
<%= form_for :petowner, :url => petowner_fights_path(@selected_pet, @pet) do |f| %>
<p>Select a pet <%#= f.collection_select(:petowner, :petowner_id, @user.petowners, :petowner_id, :pet_name) %></p>
<%= render 'monsterinfo' %>
<div class="outer"></div>
<%= f.submit "Fight Selected Monster" %>
<% end %>
答案 0 :(得分:0)
你可能想要params[:petowner][:petowner_id]
。绝对不要在视图中用html构造select。
顺便说一句,看到所有参数传递给控制器动作真的很有帮助。当我需要时,我倾向于raise params.to_yaml
。