0

複数の工夫登録フォームビューRuby on Railsでさまざまな勘定科目タイプに異なるフォームをレンダリングする方法はありますか?

は、私が最初の行のdivの中に注入されたルビーの全体の形式は、間違っていることを前提としています。私はそれが必要な登録見解の数を表示するためにそれを含めた。私はまたそれが明らかだったことを知って、エラーを含めた。

この機会に、複数のif、elsif、whenなどのステートメントに対する適切なRoRフォーマットを実例に注意してください。私はすべての意見が大好きです。

不適切と思われる用語を間違えて訂正してください。 考案中でSyntaxError :: RegistrationsController#新しい


工夫/登録/ new.html.erb

<div class="row"> 
    <%= if params[:plan] == '1' %> 
     Contributor 
    <%= elsif params[:plan] == '2' %> 
     Elite Contributor 
    <%= elsif params[:plan] == '3' %> 
     Technician 
    <%= elsif params[:plan] == '4' %> 
     Elite Technician 
    <%= elsif params[:plan] == '5' %> 
     Center 
    <%= elsif params[:plan] == '6' %> 
     Elite Center 
    <%= elsif params[:plan] == '7' %> 
     Affair 
    <%= elsif params[:plan] == '8' %> 
     Elite Affair 
<% end %> 

    <div class="col-md-4 col-md-offset-4"> 
    <div class="well"> 
     <div class="page-header text-center"> 
     <h2>JOIN</h2> 
     <li role="separator" class="divider"></li> 
     </div> 

     <%= form_for(resource, as: resource_name, url: registration_path(resource_name)) do |f| %> 
     <%= devise_error_messages! %> 

     <div class="field form-group"> 
      <%= f.label :email %><br /> 
      <%= f.email_field :email, autofocus: true, class: 'form-control' %> 
     </div> 

     <div class="field form-group"> 
      <%= f.label :password %> 
      <% if @minimum_password_length %> 
      <em>(<%= @minimum_password_length %> characters minimum)</em> 
      <% end %><br /> 
      <%= f.password_field :password, autocomplete: "off", class:'form-control' %> 
     </div> 

     <div class="field form-group"> 
      <%= f.label :password_confirmation %><br /> 
      <%= f.password_field :password_confirmation, autocomplete: "off", class:'form-control' %> 
     </div> 

     <br> 

     <div class="actions text-center"> 
      <%= f.submit " JOIN ", class:'btn btn-lg btn-success' %> 
     </div> 
     <% end %> 

     <div class="text-right"> 
     <%= render "devise/shared/links" %> 
     </div> 

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


エラーをありがとう

コントローラ/ pages_controller.rb

def home 
    @contributor_plan = Plan.find(1) 
    @elitecontributor_plan = Plan.find(2) 
    @technician_plan = Plan.find(3) 
    @elitetechnician_plan = Plan.find(4) 
    @center_plan = Plan.find(5) 
    @elitecenter_plan = Plan.find(6) 
    @affair_plan = Plan.find(7) 
    @eliteaffair_plan = Plan.find(8) 
end 

ページ/ home.html.erb

(私のホーム・ページビューの多くのルビーリンクの1つ)

<%= link_to "Contributor", new_user_registration_path(plan: @contributor_plan.id), class:'btn btn-info btn-lg btn-block' %> 
+0

ほとんどすべてのコードをコメントアウトし、チャンクでチャンクのコメントを外して、構文エラーの原因となっているセクションを見つけてください。相対チャンクを見つけたら、ラインに絞って投稿を更新できるかどうかを確認してください。 – nicholas79171

+0

@ nicholas79171 - シンプルで効果的なチップをありがとう。私はそれを頻繁に利用します。私は、私の登録ファイルの最初の "div行"内の注入されたルビコードにエラーを絞り込んだ。このコードを削除すると、適切なビューにルーティングされます(URLプランIDは一致します)が、異なるプランごとにフォーム内の一意のHTMLを表示できません。 –

答えて

0

私が最初に気がつくのは、あなたが<%=%> if/elsifの場合、< %%>タグではなくerbタグです。これは不必要で、潜在的に問題があります。 =を取り出してみてください。

いくつかの追加の考え:

これはcaseのステートメントではなくif条件文のために良い場所でしょう。

Railsでは、ビューの中に入れるのではなく、ヘルパーメソッドに大量のコードを引き出すこともベストプラクティスと考えられます。これはしばしばスタイルの問題ではなく、デバッグが容易になるためです。

最後に、あなたがここで何をしようとしているのかが完全にはっきりしていません。コードの唯一のことは、フォームの上に別のテキストを表示し、下のフォームがerbコードの影響を受けないように見えることです。これは、あなたがやっていることをやるのが簡単で誤りが起こりにくい方法であると思わせます。さまざまなプランのハードコードされたリンクとインスタンス変数も赤いフラグです。私はコードをリファクタリングしようとします。

+0

お時間をいただきありがとうございました。あなたは紳士で学者です。 "="問題を解決しました。私はあなたの提言を真剣に受け止め、適切なRoRの実践についての私の理解を向上させることに努めます。 –

関連する問題