如何在rails上的ruby中为各种帐户类型呈现不同的表单?

时间:2016-07-21 15:20:29

标签: ruby-on-rails if-statement model-view-controller devise controller

多个设计注册表单视图

我假设第一行div中注入的ruby的整个格式是不正确的。我把它包括在内以显示所需的设计注册视图的数量。我也把错误包括在内,知道这很明显。

任何人都想借此机会举例说明多个if,elsif,when等语句的正确RoR格式?我喜欢所有意见。

请原谅并更正您认为合适的任何错误术语。

谢谢

错误: Devise中的SyntaxError :: RegistrationsController #new

设计/注册/ new.html.erb

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

控制器/ pages_controller.rb

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

页/ home.html.erb

(我主页视图中众多红宝石链接之一)

chrome.runtime.onMessage.addListener(  
  function(package, sender, sendResponse
    ){
    switch (package.message){
      case "open":
        if (package.subject == "tab")
          {
          win = myNamespace.tabs[package.module];
          result = win ? false : true; 

          if (result)
            chrome.tabs.create(
              {"url": package.url },
              function(tab) {        
                if (chrome.extension.lastError )
                  console.log(chrome.extension.lastError);
                else
                  myNamespace.tabs[package.module] = tab.id;
                chrome.tabs.onRemoved.addListener(
                    function( tabId, removeInfo )                    
                    {
                    for (var k in myNamespace.tabs )
                      {
                      if (tabId === myNamespace.tabs[k])
                        {
                        myNamespace.tabs[k] = null;
                        break;
                        } 
                      }  
                    }
                  );
              }
            );
          }
      break;
      case "initiate-page":    
        if (package.subject == "html-add-listeners")
          {
          switch(package.module){
            case "easy_options":
            case "advanced_options":
            case "images_options":            
            sendResponse(
              { message:"initiate-page-response", 
                subject:"accept-namespace", 
                recepient: {id: package.sender.id },
                module: package.module,
                namespace: myNamespace,
                info: "response to initiate-page message"   
              }
             )
            break;
            }
          }
      break;
    }
  }
)

1 个答案:

答案 0 :(得分:0)

我看到的第一件事是您正在使用&lt;%=%&gt; erb标签而不是&lt; %%&gt;对于if / elsif。这是不必要的并且可能存在问题。尝试取出=。

一些额外的想法:

对于case语句而不是if条件,这将是一个好地方。

在Rails中,最好的做法是将大块代码拉出到辅助方法中,而不是将其放在视图中。这通常不仅仅是风格问题,因为它会使调试变得更容易。

最后,它并不完全清楚你在这里想做什么。在我看来,代码所做的唯一事情是在表单上方显示不同的文本,下面的表单不受erb代码的影响。这让我怀疑有一种更简单,更不易出错的方式来做你正在做的事情。各种计划的硬编码链接和实例变量也是红旗。我会尝试重构代码。