从选择框中获取数据并将其传递给参数

时间:2013-11-25 20:06:31

标签: ruby-on-rails ruby

我这样做是为了一个学校项目而且它不起作用。 :( 如何从视图中取出选定的[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 %>

1 个答案:

答案 0 :(得分:0)

你可能想要params[:petowner][:petowner_id]。绝对不要在视图中用html构造select。

顺便说一句,看到所有参数传递给控制器​​动作真的很有帮助。当我需要时,我倾向于raise params.to_yaml

相关问题