0

問題が次々と発生していますが、プロジェクトの完成まであと少しです!!

これで、Ruby on Rails プログラムが完成し、動作するようになりました。今、私はそれをHTMLテンプレートに統合しようとしています..

最終的にグラフィックスとテンプレートを適切にロードできるようになりましたが、それは開始ページであるため、index.html.erb ページに対してのみです。ここでの問題は、コントローラ ファイルから " result "として定義されたページが正しく表示されないことです。簡単に修正できるように見えますが、方法がわかりません。結果の形式に基づいてインライン css スタイルが適切に機能しているように見えますが、私の style.css の画像とスタイリングは現在テンプレート用にロードされていません (インデックス用を除く)。

images ディレクトリを public のサブディレクトリとして配置します。私も style.css を公開しています。

テンプレートの HTML コーディングを含む「 customerdisplay.html.erb」というビューのページがあります。そのファイルの div タグの 1 つは、外部スタイルシートのカスタム div ですが、そのタグを使用するときは、配置も中央に設定します。センタリングは機能しますが、外部スタイルシートの他のすべてが機能していません。

参照用にコントローラー コードとビュー コードを追加します。


私の質問:

外部スタイルシートと画像をコントローラ ファイルの "def result" で機能させるにはどうすればよいですか?


myRuby_controller.rb

class MyRubyController < ApplicationController
  def index
# the first user screen is displayed:
# index.html.erb in views/myRuby directory
    # This controller is executed
  end

def result
    # when the user presses submit, result is called
@data = params[:data] # The data text field 
    @field = params[:field] # the request
    # check for nondigits in the data
   
    if @data =~ /\D/ 
       # if a nondigit, invalid.html.erb is displayed
       render :action => 'invalid' 
    else  # valid data 
    case @field   # check the request
        when  "cu" then  # customer data request
           # Verify that customer is in the customer table
           if Customer.exists?(@data) 
             # exists, display custdisply.html.erb
             render :action => 'custdisplay'
           else
             # does not, display notfound.html.erb
             render :action => 'notfound'
           end
        when "sr" then   # sales rep request
            if Customer.exists?(@data)
                         # exists, display salesrepdisplay.html.erb
                             render :action => 'salesrepdisplay'
                       else
                         # does not, display notfound.html.erb
                             render :action => 'notfound'
                       end

        when "or" then  #orders request
            if Customer.exists?(@data)
                         # exists, display orderdisplay.html.erb
                             render :action => 'orderdisplay'
                       else
                         # does not, display notfound.html.erb
                             render :action => 'notfound'
                       end

        when "p" then  #parts request
                        if Customer.exists?(@data)
                         # exists, display partsdisplay.html.erb
                             render :action => 'partsdisplay'
                       else
                         # does not, display notfound.html.erb
                             render :action => 'notfound'
                       end

    end  # end case

     end # end if valid data        

   end
   def custdisplay
   end
   def salesrepdisplay
   end
   def orderdisplay
   end
   def partsdisplay
   end
   def notfound
   end
   def invalid
   end
end 

ビュー/customerdisplay.html.erb

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head profile="http://gmpg.org/xfn/11">
    <link rel="stylesheet" type="text/css" href="style.css">
<title>The Justin Geis Data Access Program</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>

<body>
<div id="logo"><img src="images/logo.png"></div>
<div id="container">
    <div id="header">
    <!--blank.. could add stuff if wanted.. --> 
    </div>
        
        <div id="content" align="center">
        <h1>Spartan Hardware Data Access</h1>
        <%  # get the customer data from the customer table
@custdata = Customer.find(@data)
# copy each field into a variable for display
@id = @custdata.id
@ln = @custdata.last_name
@fn = @custdata.first_name
@bl = @custdata.balance;
@bl = sprintf("%7.2f",@bl) # format as currency
@cl = @custdata.credit_limit
@cl = sprintf("%7.2f",@cl) # format as currency
@sr = @custdata.sales_rep

%>
<h1>customer data for customer: <%=@data %></h1>
<table border=1>
        <tr>
          <td>ID</td>
          <td>Last name</td>
          <td>First name</td>
          <td>Balance</td>
          <td>Credit limit</td>
          <td>Sales rep</td>
        </tr>
        <tr>
          <td><%=@id%></td>
          <td><%=@ln%></td>
          <td><%=@fn%></td>
          <td><%=@bl%></td>
          <td><%=@cl%></td>
          <td><%=@sr%></td>
        </tr>
      </table>
    </div>
    <div id="footer"><!--nothing right now --></div>
    
    </div> 
  </body>
</html>

ご不明な点がございましたら、お知らせください。ありがとう!

4

1 に答える 1

1

あなたのビューは、レイアウトと呼ばれる別のビュー内で、通常はファイル内でレンダリングされていますapp/views/layouts/application.html.erb<head>.の中にあるため、それが機能しない理由<body>です。

2 つのオプション:

  1. Rails の方法でレイアウトからリンクするか、ビュー内yieldから a タグを生成するレイアウト内に a を配置します。http://api.rubyonrails.org/classes/ActionView/Helpers/CaptureHelper.html#method-i-content_forcontent_forsalesrepdisplay
  2. の代わりにrender :action => 'salesrepdisplay'render :action => 'salesrepdisplay', :layout => nil
于 2013-11-13T23:13:38.010 に答える