0

あるサイトから次のサイトにパラメーターを渡して使用しようとしていますが、問題があります。

ストア>インデックス

<h1>All Priorities</h1>


<% @buildings.each do |building| %>
<div class="entry">
    <div class="img">
    <%= image_tag (building.photo.url)%></div>
    <div class=" disc">
    <h3>Name of the Bulding:  <%= building.title %></h3>
     <h4>Status: <%= building.status %></h4>
    Info: <%=sanitize(building.description)%>
    <div class="price_line">
        <span class="price">Price: <%= sprintf("€ %0.02f",building.price)%></span><br/>
        <div class="button">
        <%= button_to "I Want to See it", new_seeit_path(building.id), :method => :get%>

</div>
    </div>
    </div>


    <%end%>
    <div class="pages">
    <%= will_paginate @buildings %></p>
    </div>

次のサイトでボタンを押すと、それが表示されます:

http://localhost:3000/seeits/new.4?

そしてページを開かない

(Building.id) を削除すると、次のように表示されます。

http://localhost:3000/seeits/new?

次のサイトに移動しますが、パラメーターはありません

views>wish_receive.text.erb <= これはメールでこれらの情報を送信します

You got a wish from   <%= @seeit.name %> 
<%= @seeit.telephone_number %>
<%= @seeit.email %>
<%= @seeit.comments %>

ルート

Projectproperties::Application.routes.draw do
  resources :seeits

  get "about/index"

  get "contact/index"

  get "store/index"

  resources :buildings
 root :to => 'store#index', :as => 'store'
end

seeits_controller

def new
    @seeit = Seeit.new

    respond_to do |format|
      format.html # new.html.erb
      format.json { render json: @seeit }
    end
  end

  # GET /seeits/1/edit
  def edit
    @seeit = Seeit.find(params[:id])
  end

  # POST /seeits
  # POST /seeits.json
  def create
    @seeit = Seeit.new(params[:seeit])

    respond_to do |format|
      if @seeit.save
        Notifier.wish_received(@seeit).deliver
        format.html { redirect_to(store_url, notice: 'Thank you for your wish will contac you very soon.') }
        format.json { render json: @seeit, status: :created, location: @seeit }
      else
        format.html { render action: "new" }
        format.json { render json: @seeit.errors, status: :unprocessable_entity }
      end
    end
  end

rake routes コマンド

      seeits GET    /seeits(.:format)             seeits#index
              POST   /seeits(.:format)             seeits#create
    new_seeit GET    /seeits/new(.:format)         seeits#new
   edit_seeit GET    /seeits/:id/edit(.:format)    seeits#edit
        seeit GET    /seeits/:id(.:format)         seeits#show
              PUT    /seeits/:id(.:format)         seeits#update
              DELETE /seeits/:id(.:format)         seeits#destroy
  about_index GET    /about/index(.:format)        about#index
contact_index GET    /contact/index(.:format)      contact#index
  store_index GET    /store/index(.:format)        store#index
    buildings GET    /buildings(.:format)          buildings#index
              POST   /buildings(.:format)          buildings#create
 new_building GET    /buildings/new(.:format)      buildings#new
edit_building GET    /buildings/:id/edit(.:format) buildings#edit
     building GET    /buildings/:id(.:format)      buildings#show
              PUT    /buildings/:id(.:format)      buildings#update
              DELETE /buildings/:id(.:format)      buildings#destroy
        store        /                             store#index
4

1 に答える 1

2

あなたの routes.rb ファイルと、どの rake ルートが出力するかを教えていただけますか?


どうぞ。

routes.rb ファイルに、これを追加します。

  resources :seeits do
    member do 
      post 'new'
    end
  end

seeits_controller.rb ファイルでは、新しいメソッドは次のようになります。

  def new
      # raise params.inspect
      @seeit = Seeit.new
      @building = Building.find(params[:building_id])

      respond_to do |format|
        format.html # new.html.erb
        format.json { render json: @seeit }
      end
    end

最後に、ビュー ファイルで、button_to コードを次のコードに置き換えます。

<%= button_to("I want to see it", {:controller => "seeits", :action => "new", :building_id => building.id})%>

ボタンは変数 building_id をパラメーターとして渡し、@ building オブジェクトにアクセスできるようになっていることに注意してください。サーバーに情報を送信しているため、コントローラーの新しいアクションは事後操作になります。これで、新しいテンプレートで @Building を使用できるようになりました。お役に立てれば。

于 2012-09-26T16:19:48.807 に答える